首页  >  文章  >  Java  >  Java中如何将字节数组转换为Long类型?

Java中如何将字节数组转换为Long类型?

Barbara Streisand
Barbara Streisand原创
2024-11-05 18:11:02304浏览

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

Java 中字节数组到长整型的转换:综合指南

长整型数据类型和字节数组之间的转换是 Java 编程中的一项基本任务,尤其是在通过网络交换数据或以二进制格式存储数据时。本文概述了有效执行此转换的各种方法。

Long 到字节数组转换

要将 long 值转换为字节数组,您可以使用以下命令方法:

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

在此代码中,分配的 ByteBuffer 对象的大小等于表示 long 值所需的字节数。 putLong 方法用于将 long 值写入缓冲区,最后,数组方法检索底层字节数组表示。

字节数组到 Long 转换

要执行反向转换,您可以使用以下代码:

<code class="java">public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip(); // Flip the buffer to make it ready for reading
    return buffer.getLong();
}</code>

这里,再次使用 ByteBuffer 对象,这次是围绕提供的字节数组。 put 方法用于将字节复制到缓冲区中,然后翻转缓冲区以指示它现在已准备好读取。最后,getLong 方法从缓冲区中检索 long 值。

避免重复创建 ByteBuffer

对于要执行多次转换的场景,避免创建会更高效每次转换都会创建新的 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>

在这种情况下,单个 ByteBuffer 对象在所有转换之间共享,从而最大限度地减少对象创建的开销。

结论

本文中描述的方法提供了在 Java 中长值和字节数组之间转换的高效可靠的方法。无论您选择 directByteBuffer 方法还是使用 ByteUtils 包装器,您都可以放心地在应用程序中处理这些转换。

以上是Java中如何将字节数组转换为Long类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn