Skip to content
Related Articles

Related Articles

Java Program to Convert Byte Array to Long

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Expert
  • Last Updated : 11 Feb, 2022

A Java Byte Array is an array used to store byte data types only. The default value of each element of the byte array is 0.

Given an array of bytes, convert it to a long value.

Example:

Byte Array: 1 2 3 4
Long Value: 16909060
Equivalent Hexadecimal String: 0x1020304

There are numerous approaches for converting a Byte Array to Long, and a few of them are listed below.

Approaches:

  • Using shifting operators
  • Using BigInteger

Method 1: Using Shifting Operators

When converting a byte array to a long value, the length of the bytes array should be equal to or less than eight since a long value occupies 8 bytes. Otherwise, it will lead to a long-range overflow.

Let’s consider a byte array:

byte[] b = {(byte)0x1, (byte)0x2, (byte) 0x3, (byte) 0x4};
it's long value = 0x1020304

A byte data type takes 8 bits.

initially let val = 0
val = (0<<8) + (11111111 & 1) = 1
val = (1<<8) + (11111111 & 010) = 100000010
val = (100000010 << 8) + (11111111 & 011) = 10000001000000011
val = (10000001000000011 << 8) + (11111111 & 011) = 1000000100000001100000100 = 0x1020304

Implementation: Following is the implementation of the foregoing approach –

Java




// Java Program for Converting byte
// array to a long value
 
class GFG {
 
    // A utility function that returns
    // long value from a byte array
    static long convertToLong(byte[] bytes)
    {
        long value = 0l;
 
        // Iterating through for loop
        for (byte b : bytes) {
            // Shifting previous value 8 bits to right and
            // add it with next value
            value = (value << 8) + (b & 255);
        }
 
        return value;
    }
   
    // Driver code
    public static void main(String[] args)
    {
        byte[] byte_array
            = new byte[] { (byte)0x1, (byte)0x2, (byte)0x3,
                           (byte)0x4 };
 
        // Printing the required Byte Array
        System.out.print("Byte Array : ");
        for (int i = 0; i < byte_array.length; i++) {
            System.out.print(byte_array[i] + " ");
        }
        System.out.println();
 
        // Finding long value through the approach discussed
        long ans = convertToLong(byte_array);
 
        // Now compare OUTPUT_VALUE and value and you
        // will find both are equal
        System.out.println("Long value in hex string: "
                           + Long.toHexString(ans));
    }
}


 
 

Output

Byte Array : 1 2 3 4 
Long value in hex string: 1020304

 

Complexity Analysis: 

 

  • Time Complexity: O(N), where N is the length of byte_array
  • Space Complexity: O(1)

Method 2: Using BigInteger

 

Even though we can use it to convert between a byte array and a primitive value, using BigInteger is a bit heavy for this kind of purpose. Let’s use the BigInteger class to convert a byte array to a long value. The BigInteger class has a longValue() method to convert a byte array to a long value:

 

long value = new BigInteger(bytes).longValue();

 

Java




// Java Program to convert byte[]
// to long Using BigInteger
 
import java.math.BigInteger;
 
class ByteToLong {
   
    // returns long value from byte[]
    static long convertToLong(byte[] bytes)
    {
        // Using longValue() from BigInteger
        return new BigInteger(bytes).longValue();
    }
 
    // Driver code
    public static void main(String[] args)
    {
        byte[] byte_array
            = new byte[] { (byte)0x1, (byte)0x2, (byte)0x3,
                           (byte)0x4 };
 
        // Printing the required Byte Array
        System.out.print("Byte Array : ");
        for (int i = 0; i < byte_array.length; i++) {
            System.out.print(byte_array[i] + " ");
        }
        System.out.println();
 
        // Finding long value through the approach discussed
        long ans = convertToLong(byte_array);
 
        // Now you can compare OUTPUT_VALUE and value and you
        // will find both are equal
        System.out.println("Long value in hex string: "
                           + Long.toHexString(ans));
    }
}


 
 

Output

Byte Array : 1 2 3 4 
Long value in hex string: 1020304

 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!