我使用以下代码将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();


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

我知道0ALF0D 0ACRLF,但是我不知道这怎么可能。

用什么可以连接?

最佳答案

听起来好像是当数据传输到“专用设备”时一样,它就像文本文件一样正在翻译。这将以您看到的方式损坏文件。例如FTP具有执行此操作的文本传输模式。

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

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

10-04 11:44