Java で Long を Byte 配列に変換して元に戻す
Java では、long 値を byte[] に変換して元に戻すと、さまざまなシナリオに共通の要件。これを実現する効率的な方法を検討してみましょう。
Long から Byte 配列への変換
long を byte[] に変換するには、Java の ByteBuffer クラスを利用できます。以下に簡単な例を示します。
<code class="java">public byte[] longToBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); return buffer.array(); }</code>
バイト配列を Long に変換する
byte[] を Long に変換するには、ByteBuffer の別のインスタンスを使用します。
<code class="java">public long bytesToLong(byte[] bytes) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.put(bytes); buffer.flip(); return buffer.getLong(); }</code>
注: 上記のコードでは、バッファを書き込みモードから読み取りモードに切り替えるため、long 値を取得する前にbuffer.flip()を呼び出すことが重要です。
最適化されたクラスベースのアプローチ
変換を繰り返すために ByteBuffer の複数のインスタンスを作成することを避けるために、次のような別のクラスを作成できます:
<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(); return buffer.getLong(); } }</code>
エンディアンの考慮事項
long と byte[] の間で変換する場合、作業しているシステムのエンディアンを考慮する必要があります。エンディアン性とは、バイトがメモリに格納される順序 (リトル エンディアンまたはビッグ エンディアン) を指します。 Java はビッグエンディアンを使用するため、この側面は自動的に処理されます。
代替アプローチ
このタイプの変換を実行するための便利な方法を提供する Guava などの代替ライブラリがあります。ただし、ここで紹介するネイティブ Java ソリューションは、ほとんどのユースケースで効率的で信頼性が高くなります。
以上がJava で Long を Byte 配列に変換して戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。