「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java で Long 値をバイト配列に変換して戻すにはどうすればよいですか?

Java で Long 値をバイト配列に変換して戻すにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:392

How to Convert a Long Value to a Byte Array and Back in Java?

Java で Long からバイト配列に変換して元に戻す

Java で、long プリミティブ データ型をバイト配列 (byte[]) に変換する) およびその逆は、TCP 接続を介したデータの送信など、さまざまな操作で一般的なタスクです。この変換を実現する包括的なソリューションは次のとおりです。

Long to Byte Array

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

このメソッドは、ByteBuffer クラスを使用して、Long.BYTES サイズのバッファーを作成します。これは、long 値を表すために必要なバイト数です。 putLong() メソッドは、long 値をバッファに書き込むために使用され、array() メソッドは、long.

Byte Array を表す基になるバイト配列を Long

に返します。
public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip(); // Flip the buffer to prepare for reading
    return buffer.getLong();
}

バイト配列をlongに変換するには、新しいByteBufferが作成され、指定されたバイト配列がロードされます。バッファを読み取り可能な状態にするために、flip() メソッドが使用されます。最後に、getLong() メソッドはバッファから long 値を読み取ります。

ヘルパー クラスでのカプセル化

便宜上、変換メソッドをユーティリティにカプセル化できます。クラス:

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(); // Flip the buffer to prepare for reading
        return buffer.getLong();
    }
}

このユーティリティ クラスは、ByteBuffer インスタンスを毎回作成して管理する必要なく、変換を実行する簡単な方法を提供します。

エンディアンネスに関する考慮事項

注ByteBuffer クラスはシステムのネイティブ エンディアンを使用すること。クロスプラットフォームの互換性が必要な場合は、エンディアンの処理について追加の考慮事項が必要になる場合があります。

代替ソリューション: ライブラリの使用

上記で提供したネイティブ Java ソリューションでも十分ですが、特定のシナリオでは退屈になる可能性があります。複雑または拡​​張されたデータ変換のニーズについては、より包括的で効率的なソリューションを提供する Guava や Apache Commons などのライブラリの使用を検討してください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3