在C#中将位转换为float时,我输入的数字错误。
让我们使用这个位number= 1065324597
在 Java 中,如果我想从bit转换为float,我会使用intBitsToFloat
方法
int intbits= 1065324597;
System.out.println(Float.intBitsToFloat(intbits));
输出:0.9982942
正确输出我希望用C#
但是,在 C#中我使用了
int intbits= 1065324597;
Console.WriteLine((float)intbits);
输出:1.065325E+09
错误!!
我的问题是如何在C#中转换inbitsToFloat?
我的尝试: 我查看了这里的文档http://msdn.microsoft.com/en-us/library/aa987800(v=vs.80).aspx 但我仍然遇到同样的麻烦
答案 0 :(得分:7)
只是强制转换是完全不同的操作。您需要BitConverter.ToSingle(byte[], int)
将int
转换为字节数组 - 并且可能会根据您想要的字节顺序颠倒顺序。 (编辑:可能不需要这个,因为两个转换使用相同的字节顺序;任何不需要的字节顺序都会自行修复。)BitConverter.DoubleToInt64Bits
有double
,但没有直接的float
等价
示例代码:
int x = 1065324597;
byte[] bytes = BitConverter.GetBytes(x);
float f = BitConverter.ToSingle(bytes, 0);
Console.WriteLine(f);
答案 1 :(得分:1)
我想补充jon双向飞碟说的话,对于大浮动,如果你不想要“E +”输出,你应该这样做:
intbits.ToString("N0");
答案 2 :(得分:1)
试试这个......
var myBytes = BitConverter.GetBytes(1065324597);
var mySingle = BitConverter.ToSingle(myBytes,0);
BitConverter.GetBytes将您的整数转换为四字节数组。然后BitConverter.ToSingle将您的数组转换为float(单个)。