double 与字节数组互转
时间: 2023-11-23 17:07:53 浏览: 131
在Java中,可以使用ByteBuffer类将double类型转换为字节数组,也可以使用ByteOrder类来指定字节顺序。以下是示例代码:
将double转换为字节数组:
```java
double d = 123.456;
ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES);
buffer.putDouble(d);
byte[] bytes = buffer.array();
```
将字节数组转换为double:
```java
byte[] bytes = {0x40, 0x49, (byte) 0x0f, (byte) 0xdb, (byte) 0xf9, 0x21, (byte) 0xca, (byte) 0xc0};
ByteBuffer buffer = ByteBuffer.wrap(bytes);
double d = buffer.getDouble();
```
注意:在字节数组和double类型之间进行转换时,需要确定字节顺序,否则可能会得到错误的结果。可以使用ByteOrder类来指定字节顺序。例如,如果要使用小端字节顺序,则可以在创建ByteBuffer对象时指定:
```java
ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES).order(ByteOrder.LITTLE_ENDIAN);
```
相关问题
c语言 double与字节数组互转
double转字节数组:
```c
void doubleToBytes(double val, unsigned char* bytes) {
union {
double dval;
unsigned char bval[sizeof(double)];
} data;
data.dval = val;
memcpy(bytes, data.bval, sizeof(double));
}
```
字节数组转double:
```c
double bytesToDouble(unsigned char* bytes) {
union {
double dval;
unsigned char bval[sizeof(double)];
} data;
memcpy(data.bval, bytes, sizeof(double));
return data.dval;
}
```
double 转字节数组
以下是一种可能的实现方式:
```java
public static byte[] doubleToBytes(double value) {
byte[] bytes = new byte[8];
long bits = Double.doubleToLongBits(value);
for (int i = 0; i < 8; i++) {
bytes[i] = (byte) (bits & 0xff);
bits >>= 8;
}
return bytes;
}
```
首先将 double 值转换为 long 类型的位表示,然后将位表示的每个字节提取出来并存储在字节数组中。由于 double 类型占用 8 个字节,因此字节数组的大小为 8。
阅读全文