我使用以下代码将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
出现之前。我知道
0A
是LF
,0D 0A
是CRLF
,但是我不知道这怎么可能。用什么可以连接?
最佳答案
听起来好像是当数据传输到“专用设备”时一样,它就像文本文件一样正在翻译。这将以您看到的方式损坏文件。例如FTP具有执行此操作的文本传输模式。
您不应混淆文本和二进制文件。您正在编写二进制格式,如果您以二进制格式读取它,则新行无关。
不要将其作为文本阅读,因为它不是文本,您不会有任何问题。