2013-07-03 4 views
5

さて、バイト配列からjavaの数値に変換する最良の方法は何か探していましたが、私はこれを見つけましたlink。 2番目の答えは、ByteBufferクラスの使用について言及しています。リンクをクリックしたくない人は、私が持っているかどうかを質問します。JavaでByteBufferのラップメソッドを使用する方法

byte[] by = new byte[8]; 

これをintに変換するにはどうしたらいいですか?まあ答えは...

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

System.out.println(l); 

結果

4 

を行くそしてそれは学ぶことは素晴らしいですが、私はちょうどそのルートを行く前に何かを確認したいです。

私は以前に8バイト長のバイト配列を読み込んでいるとします。私はその後、

byte[] oldByte = new byte[8]; 

...

ByteBuffer bb = ByteBuffer.wrap(new byte[] {oldByte[2], oldByte[3]}); 
int intValue = bb.getInt(); 

は、その仕事は、/前の例と同じように読まれますか?

+0

intを持つために4バイトが必要なので、あなたはjava.nio.BufferUnderflowExceptionを取得しますが、 ByteBuffer 2バイト – Brinnis

答えて

6

ByteBufferクラスのdocumentationはあなただけwrapへの呼び出しに2つのバイトを渡している場合、あなたはBufferUnderflowExceptionを取得するようgetInt()方法は、次のバイトを読み込むように指定しています

例外BufferUnderflowException - このバッファに4バイト未満が残っている場合

+0

それで、あなたはそれが次のようになっているはずです: 'ByteBuffer bb = ByteBuffer.wrap(new byte [] {0、0、oldByte [2]、oldByte [3]});'? –

+1

@ This0nePr0grammerはい、ドキュメントによると、デフォルトのバイトオーダはビッグエンディアンなので、正しく見えます。 – andersschuller

関連する問題