我需要类似于Java项目的Python结构模块的东西。我想打包整数(也可能是浮点数和双精度)到字节数组中。此外,我想选择字节顺序,并且通常完全控制这是如何完成的,因为我需要将这些数据发送到某个硬件,该硬件将以另一种语言运行代码。将数据打包为字节[]
回答
对于int VAR可以采取INT的每个字节,把阵列上。像这样:
int info = 123456789;
byte [] data = new byte[100];
data[0] = (byte) ((info>>24) & 0xff);
data[1] = (byte) ((info>>16) & 0xff);
data[2] = (byte) ((info>>8) & 0xff);
data[3] = (byte) ((info) & 0xff);
int out = 0;
out = ((data[0]&0xff)<<24) | ((data[1]&0xff)<<16) | ((data[2]&0xff)<<8) | data[3]&0xff);
System.out.println("info " + info);
System.out.println("out " + out);
对于float或double,你不能直接这样做。有必要将你的var转换为int。可以使用方法Float.floatToRawIntBits()或Double.doubleToRawLongBits()完成。
更好地使用['floatToRawIntBits()'](http://docs.oracle.com/javase/6/docs/api/java/lang/Float。 html#floatToRawIntBits%28float%29)或['doubleToRawLongBits()'](http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#doubleToRawLongBits%28double%29)用“像1000000这样的常数乘以”来欺骗... – glglgl
@glglgl谢谢,使用floatToRawIntBits()真的更好。我会升级我的答案。 – Derzu
- 1. 将字节数据编码为数字
- 2. 将数字打包为奇数位。
- 3. 将两个99字节的TCP数据包合并为一个198字节的TCP数据包。
- 4. 如何将数据包转换为字节
- 5. 将图像数据转换为字节[]
- 6. 将数据编码为1个字节
- 7. 将字符串转换为Python中的打包数据
- 8. 打印字节包含NULL
- 9. C预处理器宏将位域打包为一个字节?
- 10. 将4字节浮点数据压缩为1字节
- 11. 将字节打印为十六进制
- 12. 将字节2d数组打印为十六进制字符串
- 13. 在打字稿中将图像转换为字节数组
- 14. 从字节读取数据包ID
- 15. 数据包的字节大小
- 16. 使用Scapy解析数据包字节
- 17. 发送数据包时字节对齐
- 18. 数据包的填充字节
- 19. 数据包中的UDP字节顺序
- 20. socket_recv数据包丢失字节PHP
- 21. 将字节数组转换为字符串的字节数
- 22. 将字符串数组(字节值)转换为字节数组
- 23. 数据包捕获看到1434字节,而不是1500字节
- 24. 在Ruby中使用(“C”)指令打包为字节字符串
- 25. 如何使用PHP Pack函数将整数打包到字节数组中?
- 26. 将1字节值和3字节值打包成单个32位结构
- 27. 将字节码字符串包装为结构为32位值
- 28. 如何将数字转换为字节?
- 29. 将字节转换为数字C#
- 30. 将数据移动到字节数组
也许是这样的:http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/ByteBuffer.html? – mowwwalker
也许你可以使用Python?可能不会,但。非常抱歉。 – Keith
完全像那个Walkerneo。想把这个答案放在一个答案中,也许有人读这个问题,这样我可以检查它作为接受的答案? –