用java或android将整数转换为无符号字节数组

本文关键字:无符号 字节 字节数 数组 转换 整数 java android | 更新日期: 2023-09-27 18:12:56

嗨,我在SO中看到了许多将整数值转换为无符号字节数组的链接。但是我不太明白。我的转换如下

//android

int checksum=104396;
byte[] byteArray = GetBytesInt(checksum);
public static byte[] GetBytesInt(int value) {
        byte[] bytes = new byte[4];
        bytes[0] = (byte) (value >> 24);
        bytes[1] = (byte) (value >> 16);
        bytes[2] = (byte) (value >> 8);
        bytes[3] = (byte) (value);
        return bytes;
    }

android的输出
[0, -105, -52]

用c#

//

uint CheckSum=104396;
byte[] byteArray=BitConverter.GetBytes(CheckSum)
where BitConverter is System method
c#中的

输出

(204151年,1,0)

如何在java或android中获得此输出。我检查了一下java 8和Guava是否返回相同的结果。

请帮我写点代码

用java或android将整数转换为无符号字节数组

根据@greenapps的建议,获得LITTLE_ENDIAN格式的字节数组解决了问题。

ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
byteBuffer.putInt((int) (value & 0xffffffffL));
byte[] array=Bytes.asList(byteBuffer.array())

android的输出

(-52年,-105年,1,0)