📅  最后修改于: 2023-12-03 14:39:34.823000             🧑  作者: Mango
在 Java 中,将双精度浮点数(double)转换为字节数组(byte[])通常需要使用 ByteBuffer 类。这个过程也称为“序列化”。
以下是一个示例方法,使用 ByteBuffer 将 double 转换为 byte[]:
public static byte[] doubleToBytes(double d) {
ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES);
buffer.putDouble(d);
return buffer.array();
}
在这个方法中,我们首先使用静态方法 ByteBuffer.allocate(int capacity)
创建了一个新的 ByteBuffer 对象。Double.BYTES
表示 double 数据类型占用的字节数,因此分配了正确的大小。
接下来,我们调用 buffer.putDouble(double d)
将 double 值写入 ByteBuffer。最后,我们使用 buffer.array()
返回字节数组。
这个方法可以在以下情况下使用:
double num = 1.2345;
byte[] numBytes = doubleToBytes(num);
这将将 1.2345 转换为字节数组。
请注意,这个方法使用默认的字节顺序(即大端字节序)。如果需要使用小端字节序,请使用 ByteBuffer.order(ByteOrder.LITTLE_ENDIAN)
设置正确的字节顺序。
public static byte[] doubleToBytes(double d, ByteOrder byteOrder) {
ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES);
buffer.order(byteOrder);
buffer.putDouble(d);
return buffer.array();
}
使用示例:
double num = 1.2345;
byte[] numBytes = doubleToBytes(num, ByteOrder.LITTLE_ENDIAN);
这将将 1.2345 转换为使用小端字节序的字节数组。
以上是在 Java 中将双精度浮点数转换为字节数组的简单介绍。