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

Mary-Kate Olsen
リリース: 2024-11-06 16:58:02
オリジナル
384 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!