我正在将用C++编写的库翻译成C#,关键字"union"只存在一次.在结构中.
将它翻译成C#的正确方法是什么?它做了什么?它看起来像这样;
struct Foo {
float bar;
union {
int killroy;
float fubar;
} as;
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个缓冲区,它将在横幅中读/写,我可以完全消除TCP分段带来的问题.我遇到的唯一问题是浮点变量,其他一切工作正常,除了浮点数.我找不到有关如何将int32位转换为float的任何信息.
将float转换为int位时,使用以下方法(直接从java的源代码中删除并转换)
private int floatToIntBits(float value)
{
int result = BitConverter.ToInt32(BitConverter.GetBytes(value), 0);
if (((result & 0x7F800000) == 0x7F800000) && (result & 0x80000000) != 0)
result = 0x7fc00000;
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,现在我需要做相反的事情,遗憾的是,BitConverter类中没有任何与float一起使用的函数.
我也无法在JavaDocs中找到很多信息,而不是我个人可以使用的任何信息,你可以在这里找到信息.
在C#中将位转换为float时,我输入的数字错误.
我们用这个位吧 number= 1065324597
在Java中,如果我想从bit转换为float,我会使用intBitsToFloat方法
int intbits= 1065324597;
System.out.println(Float.intBitsToFloat(intbits));
Run Code Online (Sandbox Code Playgroud)
输出:0.9982942将正确的输出我想在C#中获得
但是,在C#中我使用过
int intbits= 1065324597;
Console.WriteLine((float)intbits);
Run Code Online (Sandbox Code Playgroud)
输出:1.065325E+09 错!
我的问题是你如何在C#中转换inbitsToFloat?
我的尝试: 我查看了这里的文档http://msdn.microsoft.com/en-us/library/aa987800(v=vs.80).aspx 但我仍然有同样的麻烦