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

2022-08-31 06:26:26

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

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


答案 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();
}

或者包装在一个类中以避免重复创建字节缓冲区:

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();
    }
}

由于这越来越受欢迎,我只想提一下,我认为在绝大多数情况下使用像番石榴这样的图书馆更好。如果你对库有一些奇怪的反对意见,你可能应该首先考虑这个答案来看待原生Java解决方案。我认为我的答案真正要说的是,你不必担心系统的字节序。


答案 2

您可以使用Google GuavaByte转换方法

例:

byte[] bytes = Longs.toByteArray(12345L);