在 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中文网其他相关文章!