为啥 Java 写入十六进制的文件,内容一直以 0a 结尾呢?

2018-05-05 09:57:06 +08:00
 AllOfMe
    @Test
    public void testWrite() throws IOException {
        File file = new File("/home/my.test");
        file.createNewFile();
        int b = 0x1B, a = 0x78, c = 0x6f, d = 0x3f;
        FileOutputStream fos = new FileOutputStream(file);
        fos.write(a);
        fos.write(b);
        fos.write(c);
        fos.write(d);
        fos.close();
    }

如图和代码,我只是想写入四个十六进制的数值进去,并且在 vim 下用%!xxd 下能看到的十六进制的数值只有 4 个。但实际上我看到的却有五个,多了一个0a,这是啥特殊情况呢?求教!

1381 次点击
所在节点    问与答
4 条回复
Shura
2018-05-05 10:04:55 +08:00
e9e499d78f
2018-05-05 10:19:06 +08:00
vim 自动加的换行符吧
AllOfMe
2018-05-05 10:19:10 +08:00
@Shura 我找到问题所在了,也和你说的换行符一样。vim 打开二进制需要 vi -b xxx,不然的话就会自动追加 0a 的
AllOfMe
2018-05-05 10:19:22 +08:00
@e9e499d78f 对的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452283

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX