1. ホーム
  2. java

[解決済み] JavaでLongをbyte[]に変換する方法

2022-04-14 17:46:59

質問

を変換するにはどうすればよいですか? longbyte[] をJavaで戻す?

を変換しようとしています。 longbyte[] を送信できるようにする。 byte[] をTCPコネクション上で実行します。もう一方では、その byte[] に変換し、再び double .

解決方法は?

public byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}

public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip();//need flip 
    return buffer.getLong();
}

または、ByteBufferを繰り返し作成しないようにクラスでラップしています。

public class ByteUtils {
    private static ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);    

    public static byte[] longToBytes(long x) {
        buffer.putLong(0, x);
        return buffer.array();
    }

    public static long bytesToLong(byte[] bytes) {
        buffer.put(bytes, 0, bytes.length);
        buffer.flip();//need flip 
        return buffer.getLong();
    }
}


せっかくなので、Guavaのようなライブラリを使ったほうがいい場合がほとんどだということをお伝えしておきます。そして、もしあなたがライブラリに対して奇妙な反対意見を持っているのであれば、おそらく この答え まずはネイティブなJavaの解決策を。私の回答が本当に優れているのは、システムのエンディアンを自分で気にする必要がないことだと思います。