2

对于 Java 项目,我需要类似于 Python 的 struct 模块的东西。我想将整数(也许还有浮点数和双精度数)打包成字节数组。此外,我想选择字节顺序,并且通常可以完全控制如何完成,因为我需要将此数据发送到一些硬件,这些硬件将以另一种语言运行代码。

4

2 回答 2

4

从这里:将 4 个字节转换为 int,您可以使用java.nio.ByteBuffer

于 2012-11-20T04:44:46.353 回答
3

对于 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);

对于浮点数或双精度数,您不能直接这样做。有必要将您的 var 转换为 int。可以使用Float.floatToRawIntBits()Double.doubleToRawLongBits()方法来完成。

于 2012-11-20T04:48:08.540 回答