我正在创建一个缓冲区,该缓冲区将在可以完全消除TCP分段带来的问题的横幅中读取/写入。我碰到的唯一问题是float变量,除了浮点数,其他所有工作都很好。我找不到有关如何将int32位转换为浮点数的任何信息。将int位转换为浮点位
当转换一个浮动到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;
}
然而,现在我需要做相反的,不幸的是,有ISN在与float一起使用的BitConverter类中没有任何函数。
我不能在JavaDocs中找到很多信息,也没有我可以亲自使用的任何信息,您可以找到信息here。
不幸的是,因为这是Unity3D的客户端API,所以我不能使用不安全的代码,我之前发现这个解决方案,并且Unity不允许它。感谢您的回复,+1为简单的解决方案。 – Hobbyist 2014-12-02 13:34:05
@ Christian.tucker是的,这是烦人的;我做了很多工作(我维护了几个二进制序列化器和其他网络实用程序库),所以当不允许使用'unsafe'时,这会伤害我很多* – 2014-12-02 23:16:23