一尘不染

如何将Long转换为byte []并返回Java

java

如何在Java中将longa 转换为a byte[]并返回?

我正在尝试将a转换long为a,byte[]以便能够byte[]通过TCP连接发送。另一方面,我想byte[]将其转换为double


阅读 436

收藏
2020-03-12

共1个答案

一尘不染

public byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}

public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip();//need flip 
    return buffer.getLong();
}

或包装在一个类中,以避免重复创建ByteBuffers

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();//need flip 
        return buffer.getLong();
    }
}

由于它变得如此流行,我只想提一提,我认为在大多数情况下,最好使用像Guava这样的库。而且,如果你对库有一些奇怪的反对意见,则可能应该首先针对本机Java解决方案考虑此答案。我认为我的答案真正要解决的主要问题是,你不必自己担心系统的字节序。

2020-03-12