double 转字节数组
时间: 2023-09-08 22:14:31 浏览: 255
以下是一种可能的实现方式:
```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。
相关问题
c# double转字节数组
可以使用BitConverter类将double类型转换为字节数组,代码如下:
```c#
double d = 3.1415926;
byte[] bytes = BitConverter.GetBytes(d);
```
注意,字节数组的长度为8,因为double类型占用8个字节。如果需要将字节数组转换回double类型,可以使用BitConverter类的ToDouble方法,代码如下:
```c#
byte[] bytes = new byte[] { 24, 45, 68, 84, 251, 33, 9, 64 };
double d = BitConverter.ToDouble(bytes, 0); // d = 3.1415926
```
double 与字节数组互转
在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);
```
阅读全文