ホームページ >Java >&#&チュートリアル >Java で Long 値をバイト配列に変換して戻すにはどうすればよいですか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 21:08:01273ブラウズ

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

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

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

Long to Byte Array

<code class="java">public byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}</code>

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

Byte Array to Long

<code class="java">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();
}</code>

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

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

便宜上、変換メソッドはユーティリティでカプセル化できます。 class:

<code class="java">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();
    }
}</code>

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

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

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

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

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

以上がJava で Long 値をバイト配列に変換して戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。