Java 字節數組是僅用於存儲字節數據類型的數組。字節數組的每個元素的默認值為 0。
給定一個字節數組,將其轉換為 long 值。
例子:
Byte Array: 1 2 3 4 Long Value: 16909060 Equivalent Hexadecimal String: 0x1020304
將字節數組轉換為長整型的方法有很多種,下麵列出了其中的一些方法。
方法:
- 使用移位運算符
- 使用BigInteger
方法一:使用移位運算符
將 byte 數組轉換為 long 值時,由於 long 值占用 8 個字節,因此 bytes 數組的長度應等於或小於 8。否則會導致long-range溢出。
讓我們考慮一個字節數組:
byte[] b = {(byte)0x1, (byte)0x2, (byte) 0x3, (byte) 0x4}; it's long value = 0x1020304
字節數據類型占用 8 位。
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
實現:以下是上述方法的實現 -
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));
}
}
輸出
Byte Array : 1 2 3 4 Long value in hex string: 1020304
複雜度分析:
- 時間複雜度:O(N),其中 N 是 byte_array 的長度
- 空間複雜度:O(1)
方法2:使用BigInteger
盡管我們可以使用它在字節數組和原始值之間進行轉換,但使用 BigInteger 對於這種目的來說有點繁重。讓我們使用 BigInteger 類將字節數組轉換為 long 值。 BigInteger 類有一個 longValue() 方法將字節數組轉換為長整型值:
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));
}
}
輸出
Byte Array : 1 2 3 4 Long value in hex string: 1020304
相關用法
- Java Byte Array轉Image用法及代碼示例
- Java Byte Array轉Object用法及代碼示例
- Java Byte Array轉Writer用法及代碼示例
- Java Byte Array轉String用法及代碼示例
- Java Byte Array轉Hex String用法及代碼示例
- Java Byte Array轉JSON用法及代碼示例
- Java Byte compareUnsigned()用法及代碼示例
- Java Byte decode()用法及代碼示例
- Java Byte parseByte()用法及代碼示例
- Java Byte toUnsignedInt()用法及代碼示例
- Java Byte toUnsignedLong()用法及代碼示例
- Java Byte valueOf()用法及代碼示例
- Java Byte byteValue()用法及代碼示例
- Java Byte compare()用法及代碼示例
- Java Byte compareTo()用法及代碼示例
- Java Byte doubleValue()用法及代碼示例
- Java Byte equals()用法及代碼示例
- Java Byte floatValue()用法及代碼示例
- Java Byte hashCode()用法及代碼示例
- Java Byte intValue()用法及代碼示例
- Java Byte longValue()用法及代碼示例
- Java Byte shortValue()用法及代碼示例
- Java Byte toString()用法及代碼示例
- Java ByteArrayOutputStream close()用法及代碼示例
- Java ByteBuffer getDouble()用法及代碼示例
注:本文由純淨天空篩選整理自unknwncdr878大神的英文原創作品 Java Program to Convert Byte Array to Long。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。