アプリ版:「スタンプのみでお礼する」機能のリリースについて

byte配列をlong float doubleとかに変換したいですけど どんなにやるかわからないです。

A 回答 (2件)

もう一つの方法も書いておきます。



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() によって変換ができます。
    • good
    • 0

ByteArrayInputStream と DataInputStream を使えば簡単です。





byte[] b = ...; // バイト配列

DataInputStream in = new DataInputStream(new ByteArrayInputSttream(b));

double d = in.readDouble();
float f = in.readFloat();
long l = in.readLong();
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています