使用 java 或 android 将整数转换为无符号字节数组
Convert integer to unsigned byte array with java or android
您好,我在 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,1,-105,-52]
//在c#中
uint CheckSum=104396;
byte[] byteArray=BitConverter.GetBytes(CheckSum)
where BitConverter is System method
在 c# 中输出
[204,151,1,0]
我如何在 java 或 android 中获得此输出。我检查了 java 8 和 Guava 那里返回相同。
请帮我写点代码
根据@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]
您好,我在 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,1,-105,-52]
//在c#中
uint CheckSum=104396;
byte[] byteArray=BitConverter.GetBytes(CheckSum)
where BitConverter is System method
在 c# 中输出
[204,151,1,0]
我如何在 java 或 android 中获得此输出。我检查了 java 8 和 Guava 那里返回相同。
请帮我写点代码
根据@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]