首页 >Java >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 到 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 的缓冲区,这是表示长值所需的字节数。 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值。

封装在Helper类中

为了方便,可以将转换方法封装在一个实用程序中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中文网其他相关文章!

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