V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
AllOfMe
V2EX  ›  问与答

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

  •  
  •   AllOfMe · 2018-05-05 09:57:06 +08:00 · 1418 次点击
    这是一个创建于 2400 天前的主题,其中的信息可能已经有所发展或是发生改变。
        @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();
        }
    
    

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

    4 条回复    2018-05-05 10:19:22 +08:00
    Shura
        1
    Shura  
       2018-05-05 10:04:55 +08:00
    e9e499d78f
        2
    e9e499d78f  
       2018-05-05 10:19:06 +08:00
    vim 自动加的换行符吧
    AllOfMe
        3
    AllOfMe  
    OP
       2018-05-05 10:19:10 +08:00
    @Shura 我找到问题所在了,也和你说的换行符一样。vim 打开二进制需要 vi -b xxx,不然的话就会自动追加 0a 的
    AllOfMe
        4
    AllOfMe  
    OP
       2018-05-05 10:19:22 +08:00
    @e9e499d78f 对的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2265 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:53 · PVG 08:53 · LAX 16:53 · JFK 19:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.