for (double d : data) { byte[] bytes = new byte[8]; long bits = Double.doubleToLongBits(d); for (int i = 0; i < 8; i++) { bytes[i] = (byte) ((bits >> (i * 8)) & 0xff); } out.write(bytes);}这个代码什么意思
时间: 2024-04-27 16:20:13 浏览: 12
这段代码是将一个 double 类型的数据转换成 8 个字节的 byte 数组,并写入输出流 out 中。具体来说,代码的执行过程如下:
1. 对于给定的 double 类型的数据 d,使用 Double.doubleToLongBits(d) 方法将其转换成一个 long 类型的二进制表示。
2. 将这个 long 类型的二进制表示按照低位优先的顺序分成 8 个字节,每个字节占用 8 个二进制位。
3. 将每个字节转换成 byte 类型,并存储在一个大小为 8 的 byte 数组中。
4. 将这个 byte 数组写入输出流 out 中。
这个过程中,代码使用了位运算符和类型转换符,并且通过循环实现了二进制表示的拆分。
相关问题
double 转 byte[]
将 double 转换为 byte[] 可以使用如下方法:
```java
public static byte[] doubleToBytes(double value) {
long bits = Double.doubleToLongBits(value);
byte[] bytes = new byte[8];
for (int i = 0; i < 8; i++) {
bytes[i] = (byte) (bits & 0xff);
bits >>= 8;
}
return bytes;
}
```
该方法将 double 值转换为 long 值,然后将 long 值的每个字节依次存放到 byte 数组中,从而得到转换后的 byte 数组。
用java写程序使double 型数组中保存有如下数据:1.23,69.88,34.45,67.98,2345.67。将数据以二进制形式保存到文件中去。
可以按照以下步骤进行:
1. 导入 java.io 包中的 FileOutputStream 类:
```java
import java.io.FileOutputStream;
import java.io.IOException;
```
2. 创建一个 double 数组并初始化:
```java
double[] data = {1.23, 69.88, 34.45, 67.98, 2345.67};
```
3. 创建一个 FileOutputStream 对象并以二进制写入模式打开它:
```java
FileOutputStream out = new FileOutputStream("data.bin");
```
4. 循环遍历数组,将每个 double 值以二进制形式写入文件中:
```java
for (double d : data) {
byte[] bytes = new byte[8];
long bits = Double.doubleToLongBits(d);
for (int i = 0; i < 8; i++) {
bytes[i] = (byte) ((bits >> (i * 8)) & 0xff);
}
out.write(bytes);
}
```
5. 关闭文件:
```java
out.close();
```
完整代码如下:
```java
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
double[] data = {1.23, 69.88, 34.45, 67.98, 2345.67};
FileOutputStream out = new FileOutputStream("data.bin");
for (double d : data) {
byte[] bytes = new byte[8];
long bits = Double.doubleToLongBits(d);
for (int i = 0; i < 8; i++) {
bytes[i] = (byte) ((bits >> (i * 8)) & 0xff);
}
out.write(bytes);
}
out.close();
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)