Main Tutorials

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

References

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
3 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Kaustav Chatterjee
1 year ago

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..

Some random guy
1 year ago

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!

shubham sharma
2 years ago

thanks for your good effort…really thanks to heart