将数据打包到byte []

时间:2012-11-20 03:50:34

标签: java python bytearray marshalling

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

2 个答案:

答案 0 :(得分:4)

从此处Convert 4 bytes to int,您可以使用java.nio.ByteBuffer

答案 1 :(得分: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()完成。