鱼C论坛

 找回密码
 立即注册
查看: 1708|回复: 10

[已解决]二进制形式写入文本文件

[复制链接]
发表于 2019-3-28 16:48:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
将一个数组 byte[] bt = {1,2,3,4} 以二进制形式写入a.txt文本中,打开a.txt文本显示乱码,这是什么情况?
知道会乱码,但是不知道原理,,,请教。。。
最佳答案
2019-3-28 19:16:04
本帖最后由 Croper 于 2019-3-28 19:27 编辑
海绵爱上星 发表于 2019-3-28 18:59
以二进制的形式写入a.txt中,是写在哪了?。。。


文件就是一段数据而已,
你二进制写入一个数字2147483647,
那么硬盘中的数据就是
11111111 11111111 11111111 01111111(FF FF FF 7F)
打开这个文件,记事本会试图把这4个字节按文本解读,
根据编码格式的不同(这些数据极大概率是不符合任意一个编码格式的文件头的,也就是大概率会按ANSI编码解读),会得到不同的结果,但是大概率都是不可打印字符/中韩文等
然后就会输出你看见的乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-28 16:56:38 | 显示全部楼层
因为记事本认为这是一个文本文件,按照文本文件的形式给你解读的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-28 17:32:24 | 显示全部楼层
确切的说是二进制的文本形式,本来也不是给人类看的,纠结这么多干嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-28 18:09:44 | 显示全部楼层
本帖最后由 jackz007 于 2019-3-28 18:12 编辑

        二进制写byte[] bt = {1,2,3,4},那么,写进文件的就是 4 个字节 01 02 03 04,由于不属于可见字符的编码,所以,只能在十六进制编辑器中才可以看到。
        如果实在想在文本编辑器中看到点什么,那就让 byte bt = {49 , 50 ,  51 , 52},你会看到 1 2 3 4,byte bt = {65 , 66 , 67 , 68},你会看到 ABCD,因为数组里是这些字符的编码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-28 18:52:51 | 显示全部楼层
jackz007 发表于 2019-3-28 18:09
二进制写byte[] bt = {1,2,3,4},那么,写进文件的就是 4 个字节 01 02 03 04,由于不属于可见字符 ...

打开文本显示几个方框。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-28 18:53:42 | 显示全部楼层
海绵爱上星 发表于 2019-3-28 18:52
打开文本显示几个方框。。。

打开文本显示几个方框,显示的方框是按照什么原则显示的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-28 18:56:49 | 显示全部楼层
jackz007 发表于 2019-3-28 18:09
二进制写byte[] bt = {1,2,3,4},那么,写进文件的就是 4 个字节 01 02 03 04,由于不属于可见字符 ...

那个在16进制编辑器中显示01 02 03 04吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-28 18:58:46 | 显示全部楼层
海绵爱上星 发表于 2019-3-28 18:52
打开文本显示几个方框。。。

      都已经告诉过你了,是不可显示字符,你还纠结什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-28 18:59:49 | 显示全部楼层
Croper 发表于 2019-3-28 16:56
因为记事本认为这是一个文本文件,按照文本文件的形式给你解读的

以二进制的形式写入a.txt中,是写在哪了?。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-28 19:16:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Croper 于 2019-3-28 19:27 编辑
海绵爱上星 发表于 2019-3-28 18:59
以二进制的形式写入a.txt中,是写在哪了?。。。


文件就是一段数据而已,
你二进制写入一个数字2147483647,
那么硬盘中的数据就是
11111111 11111111 11111111 01111111(FF FF FF 7F)
打开这个文件,记事本会试图把这4个字节按文本解读,
根据编码格式的不同(这些数据极大概率是不符合任意一个编码格式的文件头的,也就是大概率会按ANSI编码解读),会得到不同的结果,但是大概率都是不可打印字符/中韩文等
然后就会输出你看见的乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-28 20:52:14 | 显示全部楼层
Croper 发表于 2019-3-28 19:16
文件就是一段数据而已,
你二进制写入一个数字2147483647,
那么硬盘中的数据就是

好的,谢谢,明白了!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 12:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表