Java – Convert byte[] to int and vice versa
In Java, we can use ByteBuffer
to convert int
to byte[]
and vice versa.
int
to byte[]
int num = 1;
// int need 4 bytes, default ByteOrder.BIG_ENDIAN
byte[] result = ByteBuffer.allocate(4).putInt(number).array();
byte[]
to int
byte[] byteArray = new byte[] {00, 00, 00, 01};
int num = ByteBuffer.wrap(bytes).getInt();
1. int to byte[]
This Java example converts an int
into a byte array and prints it in hex format.
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();
}
}
Output
Terminal
Input : 1
Byte Array (Hex) : 00000001
2. byte[] to 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();
}
}
Output
Terminal
Byte Array (Hex) : 00000001
Result : 1
How to convert integer to exact bytes, like for 0-255 only 1 byte is required, not 4 bytes.in that case I want a array of size 1 and for 257 I want a array of size 2..like this..
I think the second code line should be
<pre class="ql-syntax" spellcheck="false">byte[] result = ByteBuffer.allocate(4).putInt(num).array();
</pre>
and the fourth
<pre class="ql-syntax" spellcheck="false">int num = ByteBuffer.wrap(byteArray).getInt();
</pre>
Thanks for your posts!
thanks for your good effort…really thanks to heart