- 締切済み
byte[] を long,float とかに変換したい
byte配列をlong float doubleとかに変換したいですけど どんなにやるかわからないです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ___noboru___
- ベストアンサー率28% (33/117)
もう一つの方法も書いておきます。 byte配列に不連続に入っているとか、単発で1回だけ一つの値が欲しいなどの場合に参考にして下さい。(DataInputStream は連続して入っていないと効率が悪いです)。 まず int, long, char などの整数型についてですが、Java はこれが何ビットなのかが決まっています(C/C++は環境依存ですがJavaには環境依存はありません)。 なのでそれに合わせて計算してしまえばできます。 例) byte[]の 5, 6, 7, 8 に Big-endian で入っている整数を int の変数に代入する場合。 byte[] b = ...; // バイト配列 int n = 0; for (i = 0; i < 4; i++) n = (n << 8) | (b[i + 5] & 0xff); float と double についてはそれぞれ上記のようにして int か long に変換後ならば Float.intBitsToFloat() か Double.longBitsToDouble() によって変換ができます。
- ___noboru___
- ベストアンサー率28% (33/117)
ByteArrayInputStream と DataInputStream を使えば簡単です。 例 byte[] b = ...; // バイト配列 DataInputStream in = new DataInputStream(new ByteArrayInputSttream(b)); double d = in.readDouble(); float f = in.readFloat(); long l = in.readLong();