バイト配列を数値に変換する方法(Java)

algorithm bytearray java numbers

8バイトの配列があり、それを対応する数値に変換したい。

例えば

byte [] by = new byte [8]; //バイト配列は 'by'に格納されます

// CONVERSION OPERATION
// return the numeric value

上記の変換操作を実行するメソッドが必要です。

  82  26


ベストアンサー

http://java.sun.comの一部として提供されているhttp://java.sun.com/javase/6/docs/api/java/nio/Buffer.html [+ Buffer +]を使用できます。 .com / javase / 6 / docs / api / java / nio / package-summary.html [+ java.nio +]パッケージで変換を実行します。

ここで、ソースの `+ byte [] `配列の長さは8で、これは ` long +`の値に対応するサイズです。

最初に、 + byte [] +`配列はhttp://java.sun.com/javase/6/docs/api/java/nio/ByteBuffer.html [+ ByteBuffer `]にラップされ、次にhttp://java.sun.com/javase/6/docs/api/java/nio/ByteBuffer.html#getLong()[` ByteBuffer.getLong `]メソッドが呼び出され、 ` long +`値を取得します。

ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();

System.out.println(l);

結果

4

コメントで `+ ByteBuffer.getLong +`メソッドを指摘してくれたdfaに感謝します。

” ” ‘

この状況では適用できないかもしれませんが、 `+ Buffer +`の美しさは、複数の値を持つ配列を見ることによってもたらされます。

たとえば、8バイトの配列があり、それを2つの「+ int 」値として表示したい場合、「 byte [] 」配列を「 ByteBuffer 」にラップして、httpとして表示できます://java.sun.com/javase/6/docs/api/java/nio/IntBuffer.html [` IntBuffer `]およびhttp://java.sun.com/javase/6/docsによって値を取得する/api/java/nio/IntBuffer.html#get(int)[` IntBuffer.get +`]:

ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 1, 0, 0, 0, 4});
IntBuffer ib = bb.asIntBuffer();
int i0 = ib.get(0);
int i1 = ib.get(1);

System.out.println(i0);
System.out.println(i1);

結果:

1
4

107


最初のバイトが最下位バイトであると仮定します。

long値= 0。 (int i = 0; i <by length; i){value =((long)by [i])

最初のバイトが最も重要ですが、それは少し異なります。

long値= 0。 (int i = 0; i <by.length; i){value =(value << 8)(by [i]

8バイトを超える場合は、longを BigIntegerに置き換えます。

私の間違いを直してくれたAaron Digullaに感謝します。

97


これが8バイトの数値の場合は、試すことができます。

BigInteger n = new BigInteger(byteArray);

これがUTF-8文字バッファの場合は、試してみることができます。

BigInteger n = new BigInteger(新しい文字列(byteArray、 "UTF-8"));

16


簡単に言うと、googleが提供する_guava_ libを使うか参照することができます。 私のクライアントコード:

ロングコンテンツ= 212000607777l。 byte [] numberByte = Longs.toByteArray(content); logger.info(Longs.fromByteArray(numberByte));

13


可変長バイトにBigIntegerを使用することもできます。 あなたはLong、Integer、Shortのどちらにも変換できます。

new BigInteger(bytes).intValue();

または極性を示すために:

new BigInteger(1、bytes).intValue();

7


配列との間のすべてのプリミティブ型のための完全なJavaコンバーターコード

3


配列内の各セルは、unsigned intとして扱われます。

プライベートint unsignedIntFromByteArray(byte [] bytes){int res = 0; if(bytes == null)はresを返します。

(int i = 0; iの場合

2


タイトルとURLをコピーしました