我正在尝试将int转换为byte []并再次返回,但我认为我在做错了。我的代码基本上是:
byte[] array = new byte[4];
array[3] = (byte) ( num & 0xFF);
array[2] = (byte) ((num >> 8) & 0xFF);
array[1] = (byte) ((num >> 16) & 0xFF);
array[0] = (byte) ((num >> 24) & 0xFF);
和
for (int i =0; i < 4; i++) {
num = (num << 8) + (array[i] & 0xff);
}
如果我从数字72开始,例如,在将其转换为字节数组并返回后,我得到数字795108710.我错过了一步,或者可能是我的结尾混淆了?谢谢你的时间。
答案 0 :(得分:3)
使用ByteBuffer
;它包含编码许多不同数据类型的方法,而无需担心字节序等:
ByteBuffer bb = ByteBuffer.allocate(32);
bb.putInt(index, 72);
...
int value = bb.getInt(index);
答案 1 :(得分:0)
试试这个:
array[3]=(byte)(num & 0xFF);
array[2]=(byte)(num & 0x0000FF00);
array[1]=(byte)(num & 0x00FF0000);
array[0]=(byte)(num & 0xFF000000);
要取回它:
num=(int)(array[0]&0xFF) | (int)(array[1]&0xFF) | (int)(array[2]&0xFF) | (int)(array[3]&0xFF);
如果您愿意,可以尝试循环:
for(int i=0; i<4; i++)
{
num=num+(int)(array[i]&0xFF);
}
这个是在C#中。不确定它是否适用于Java。但我认为,会这样做。