c#如何将float转换为int
本文关键字:转换 int float | 更新日期: 2023-09-27 18:06:26
我需要将float转换为int(单精度,32位),如:
'float: 2(十六进制:40000000)to int: 1073741824'。知道怎么实现吗?
我在msdn帮助中寻找它,但没有结果。
float f = ...;
int i = BitConverter.ToInt32(BitConverter.GetBytes(f), 0);
BitConverter。DoubleToInt64Bits,根据这个问题的公认答案
如果上述解决方案对您没有好处(由于它作用于double
/Double
而不是float
/Single
),那么请参阅David Heffernan的回答。
David谢谢,这是我长时间搜索Java方法类似物的简短回答:Float.floatToIntBits。下面是完整的代码:
static void Main()
{
float tempVar = -27.25f;
int intBits = BitConverter.ToInt32(BitConverter.GetBytes(tempVar), 0);
string input = Convert.ToString(intBits, 2);
input = input.PadLeft(32, '0');
string sign = input.Substring(0, 1);
string exponent = input.Substring(1, 8);
string mantissa = input.Substring(9, 23);
Console.WriteLine();
Console.WriteLine("Sign = {0}", sign);
Console.WriteLine("Exponent = {0}", exponent);
Console.WriteLine("Mantissa = {0}", mantissa);
}
如果你的目标版本小于。net 4且BitConverter不可用,或者你想将浮点数转换为32位整型,请使用内存流:
using System;
using System.IO;
namespace Stream
{
class Program
{
static void Main (string [] args)
{
float
f = 1;
int
i;
MemoryStream
s = new MemoryStream ();
BinaryWriter
w = new BinaryWriter (s);
w.Write (f);
s.Position = 0;
BinaryReader
r = new BinaryReader (s);
i = r.ReadInt32 ();
s.Close ();
Console.WriteLine ("Float " + f + " = int " + i);
}
}
}