文章中如果有写错、表述不明、有疑问或者需要扩展的知识,欢迎留言或者私信~
1.区别
如果一个文件说是
文本文件
,使用任何一种
文本编辑器
打开可以展现出
人类可读信息字符
,因为编码都
符合某种编码方式
,如ASCII、UTF8、GB2312等等(在文件头可以读出来是什么编码方式,然后文本编辑器再按照规则去读取翻译成对应的字符,展示给我们的就是可读的了)。(关于编码方式不了解可以看
这一篇
)
如果一个文件说是
二进制文件
,肯定没有编码方式,使用某些
文本编辑器
可以打开,展现出来的就是可能一些
乱码
的字符;也有些可以读取二进制文件的,展示出来就是原始的0101这种二进制了。比如说使用
UtralEdit
可以显示
原始的二进制文件
,显示的就是
原始16进制
。右侧自动选了
一种编码方式进行翻译成文
本,比如他自动选择的就是GBK,显示出来就是乱码。
下图的例子使用
UtralEdit
打开的一个
png格式
的文件(也就是图片,本质上也是一个二进制文件):
(疑问:为什么utraledit 选择了
另外一种编码方式的时候
左边的二进制的值
也变了??)
有些
二进制文件
使用
通用的规范进行编码,有一定的标准
,比如常见的图片格式JPEG,PNG,使用
看图软件
就能正常打开
显示出图片的样子
。就是二进制文件需要特殊的软件进行打开才是正确的打开方式。
有些
二进制文件
编码格式是程序自定义规范进行编码,对于这种二进制,只有程序的开发者自己知道该文件所对应的编码规范,进行解码使用。
可执行文件
,也是文件,也是
二进制文件
,而对这
种文件的解析就需要操作系统的参与了
,涉及到
可执行文件的装载等,也是有一个的规范的
。可以查看《程序员的自我修养》下的文章
我们说这个文件是二进制文件,这个是文本文件,视角就是从
打开这个文件
的
程序
在对
文件内容
的解释上。
我们使用一般的
文本编辑器
打开
文本文件,
看到的是我们认识的字符。
打开
二进制文件
,可能根本就打不开。
(而从计
算机本身的存储
的视角来看,文本文件和二进制文件都是文件,都是存储在电脑上的都是0101的二进制。只不过文本文件是把字符用某种方式解码成对应的0101这种,读取时再解码成字符)
2.如何修改二进制文件-Vim
使用vim修改:
vim -b 文件名
:%!xxd
——转化成16进制
然后进行修改二进制
:%!xxd -r
——转回去
:wq
在Linux下使用vim配合xxd查看并编辑二进制文件 – killkill – 博客园
3.如何把二进制文件转化成其他文本文件,从而搜索ASCII字符
1.先使用
iconv
命令://IGNORE忽略那些翻译不了的
iconv -f GB2312 -t UTF-8//IGNORE {} -o $filename.text
Linux命令(35)——iconv命令 – 云+社区 – 腾讯云
2.再使用
grep
对 *.text 进行搜索想要查找的ASCII字符