在Java中,我们可以使用ByteBuffer
将int
转换为byte[]
,反之亦然。
int
到byte[]
int num = 1;
// int need 4 bytes, default ByteOrder.BIG_ENDIAN
byte[] result = ByteBuffer.allocate(4).putInt(number).array();
byte[]
到int
byte[] byteArray = new byte[] {00, 00, 00, 01};
int num = ByteBuffer.wrap(bytes).getInt();
1. int到byte []
这个Java示例将一个int
转换为一个字节数组,并以十六进制格式打印它。
IntToByteArrayExample.java
package com.mkyong.nio;
import java.nio.ByteBuffer;
public class IntToByteArrayExample {
public static void main(String[] args) {
int num = 1;
byte[] result = convertIntToByteArray(num);
System.out.println("Input : " + num);
System.out.println("Byte Array (Hex) : " + convertBytesToHex(result));
}
// method 1, int need 4 bytes, default ByteOrder.BIG_ENDIAN
public static byte[] convertIntToByteArray(int value) {
return ByteBuffer.allocate(4).putInt(value).array();
}
// method 2, bitwise right shift
public static byte[] convertIntToByteArray2(int value) {
return new byte[] {
(byte)(value >> 24),
(byte)(value >> 16),
(byte)(value >> 8),
(byte)value };
}
public static String convertBytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte temp : bytes) {
result.append(String.format("%02x", temp));
}
return result.toString();
}
}
输出量
Terminal
Input : 1
Byte Array (Hex) : 00000001
2. byte []转换为int
ByteArrayToIntExample.java
package com.mkyong.nio;
import java.nio.ByteBuffer;
public class ByteArrayToIntExample {
public static void main(String[] args) {
// byte = -128 to 127
byte[] byteArray = new byte[] {00, 00, 00, 01};
int result = convertByteArrayToInt2(byteArray);
System.out.println("Byte Array (Hex) : " + convertBytesToHex(byteArray));
System.out.println("Result : " + result);
}
// method 1
public static int convertByteArrayToInt(byte[] bytes) {
return ByteBuffer.wrap(bytes).getInt();
}
// method 2, bitwise again, 0xff for sign extension
public static int convertByteArrayToInt2(byte[] bytes) {
return ((bytes[0] & 0xFF) << 24) |
((bytes[1] & 0xFF) << 16) |
((bytes[2] & 0xFF) << 8) |
((bytes[3] & 0xFF) << 0);
}
public static String convertBytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte temp : bytes) {
result.append(String.format("%02x", temp));
}
return result.toString();
}
}
输出量
Terminal
Byte Array (Hex) : 00000001
Result : 1
参考文献
翻译自: https://mkyong.com/java/java-convert-byte-to-int-and-vice-versa/