gjr*_*ber 4 c++ java serialization
我需要序列化一个java Float,由一个用C++编写的应用程序通过Socket通信读取.这有标准吗?在Float类中使用floatToIntBits方法最简单,但我不确定它是多么标准.
事实上,这是非常标准的.该floatToIntBits函数为您提供float的IEEE编码的实际字节.唯一的问题是字节将是big-endian,因此在读入C++应用程序时必须反转字节顺序.(除非你的C++平台也是big-endian!)
使用Float.floatToIntBits()(或者Float.floatToRawIntBits()如果要保留NaN值)将float转换为整数. floatToIntBits()指定以IEEE 754格式返回整数,这是几乎所有C/C++实现使用的格式.然后,您应该将整数转换为网络字节顺序的字节数组(big-endian),然后您可以安全地序列化为文件,套接字,字节流等:
int floatBits = Float.floatToIntBits(myFloat);
byte floatBytes[] = new byte[4];
floatBytes[0] = (byte)(floatBits >> 24);
floatBytes[1] = (byte)(floatBits >> 16);
floatBytes[2] = (byte)(floatBits >> 8);
floatBytes[3] = (byte)(floatBits);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5344 次 |
| 最近记录: |