FileOutputStream 将 `0A` 字节更改为 `0D 0A`

FileOutputStream change `0A` byte to `0D 0A`

我使用以下代码将 float 转换为 byte[] 数组:

byte[] bytes = ByteBuffer.allocate(4).putFloat(number).array();

例如,如果我输入数字 0.02f,我会得到字节数 [60,-93,-41,10] 然后我尝试使用此代码将此 byte[] 写入文件:

FileOutputStream fos = new FileOutputStream(file);
fos.write(bytes);
dbf.close();

在 HEX 编辑器的大多数平台上,此文件如下所示:3C A3 D7 0A。但是在特殊设备上,相同的代码给出了这个:3C A3 D7 0D 0A。在每个 0A 0D 出现之前。

我知道 0ALF0D 0ACRLF 但我不知道这是怎么回事。

可以连接什么?

听起来好像当数据传输到您的 "special device" 时,它正在被翻译,就好像它是一个文本文件一样。这将以您看到的方式损坏文件。例如FTP 有一个文本传输模式可以做到这一点。

你不应该混淆文本和二进制。您正在编写二进制格式,如果您以二进制格式读取它,则换行不相关。

不要将其作为文本阅读,因为它不是文本,您不会有任何问题。