我使用以下代码将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
出现之前。
我知道0A
是LF
而0D 0A
是CRLF
,但我不知道这是怎么回事。
可以连接什么?
答案 0 :(得分:2)
听起来就像是将数据传输到您的特殊设备"它被翻译为好像是一个文本文件。这将以您看到的方式破坏文件。例如FTP具有文本传输模式,可以执行此操作。
你不应该混淆文本和二进制文件。您正在编写二进制格式,如果您将其作为二进制格式读取,则新行不相关。
请勿将其作为文字阅读,因为它不是文字而且您不会遇到问题。