二进制形式写入文本文件
将一个数组 byte[] bt = {1,2,3,4} 以二进制形式写入a.txt文本中,打开a.txt文本显示乱码,这是什么情况?知道会乱码,但是不知道原理,,,请教。。。 因为记事本认为这是一个文本文件,按照文本文件的形式给你解读的 确切的说是二进制的文本形式,本来也不是给人类看的,纠结这么多干嘛 本帖最后由 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,因为数组里是这些字符的编码。 jackz007 发表于 2019-3-28 18:09
二进制写byte[] bt = {1,2,3,4},那么,写进文件的就是 4 个字节 01 02 03 04,由于不属于可见字符 ...
打开文本显示几个方框。。。 海绵爱上星 发表于 2019-3-28 18:52
打开文本显示几个方框。。。
打开文本显示几个方框,显示的方框是按照什么原则显示的。。。 jackz007 发表于 2019-3-28 18:09
二进制写byte[] bt = {1,2,3,4},那么,写进文件的就是 4 个字节 01 02 03 04,由于不属于可见字符 ...
那个在16进制编辑器中显示01 02 03 04吗? 海绵爱上星 发表于 2019-3-28 18:52
打开文本显示几个方框。。。
都已经告诉过你了,是不可显示字符,你还纠结什么? Croper 发表于 2019-3-28 16:56
因为记事本认为这是一个文本文件,按照文本文件的形式给你解读的
以二进制的形式写入a.txt中,是写在哪了?。。。 本帖最后由 Croper 于 2019-3-28 19:27 编辑
海绵爱上星 发表于 2019-3-28 18:59
以二进制的形式写入a.txt中,是写在哪了?。。。
文件就是一段数据而已,
你二进制写入一个数字2147483647,
那么硬盘中的数据就是
11111111 11111111 11111111 01111111(FF FF FF 7F)
打开这个文件,记事本会试图把这4个字节按文本解读,
根据编码格式的不同(这些数据极大概率是不符合任意一个编码格式的文件头的,也就是大概率会按ANSI编码解读),会得到不同的结果,但是大概率都是不可打印字符/中韩文等
然后就会输出你看见的乱码
Croper 发表于 2019-3-28 19:16
文件就是一段数据而已,
你二进制写入一个数字2147483647,
那么硬盘中的数据就是
好的,谢谢,明白了!!
页:
[1]