Java VS C#中的intBitsToFloat方法?

时间:2013-08-06 11:30:42

标签: c# java floating-point bits

在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 但我仍然遇到同样的麻烦

3 个答案:

答案 0 :(得分:7)

只是强制转换是完全不同的操作。您需要BitConverter.ToSingle(byte[], int)int转换为字节数组 - 并且可能会根据您想要的字节顺序颠倒顺序。 (编辑:可能不需要这个,因为两个转换使用相同的字节顺序;任何不需要的字节顺序都会自行修复。)BitConverter.DoubleToInt64Bitsdouble,但没有直接的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(单个)。