十六进制编辑器(Hex Editor),为什么叫十六进制编辑器呢?十六进制编辑器,明明编辑的是二进制内容呀。
问:十六进制编辑器(Hex Editor),为什么叫十六进制编辑器呢?十六进制编辑器,明明编辑的是二进制内容呀。
答:因为这是人为规定的。
要说起十六进制编辑器(Hex Editor),首先要声明一点,本文所指的十六进制编辑器和Hex Editor,并不是指的某一款特定的软件,而是指的具有以十六进制显示文件二进制编码的一种编辑器。例如:UltraEdit,WinHEX,010edit。甚至,更广义的DiskGenius,也可以被称作十六进制编辑器。
十六进制编辑器,之所以被称作十六进制编辑器,主要有以下特点:
1、能够以十六进制数字0-F,表示二进制数字0和1。
2、以1个字节(8bit)为单位,对二进制的内容进行分割。
3、能够在文本编辑器的左侧或右侧,以ASCII字符为文本,显示二进制的实际文本内容。
通过查阅资料(资料日后补上,昨天晚上查的。网页已经关了。)可以发现。如果需要对文件以二进制数字的格式进行显示和编辑,人类是很难能够正确阅读的。而以十六进制数字的格式,以1个字节为单位,来展示二进制的内容,则会很容易显示、阅读和编辑二进制的内容。
例如:
00000000(B) = 00(H)
11111111(B) = FF(H)
00000000 11111111 00001111(B)
00 FF 0F(H)
而根据维基百科(WikiPedia)关于二进制和十六进制的介绍,最初的PC机,普遍使用的是ASCII编码。ASCII编码1个字节的长度,是1个字节。于是,人们为了方便以文字的方式书写和阅读,便设计出了以1个ASCII字符(长度为1个字节,8位二进制编码)和一个英文空格为分隔,在PC机当中展示了出来。
那为什么1个字节的二进制数字内容,会以2位十六进制数来展示呢?
因为,1个字节一共可以表示00000000(B)=0(D)到11111111(B)=255(D)总计256种(2^8=256)可能的二进制内容。二进制的最小数字00000000和最大数字11111111可以转换为十进制的最小数字0和最大数字255,也可以转换为十六进制的最小数字00和最大数字FF。根据本片文章上文介绍的内容,人们为了方便阅读,不直接在PC机的显示器上,直接展示二进制的数字。而是使用2位十六字节的数字,展示在PC机的显示器上。这样,1个字节只需要2位0-F的数字,即可表示这段文件的内容。所以,1个字节的二进制数字内容,会以2位十六进制数来展示。
综上所述,十六进制编辑器,虽然编辑的是十六进制的数字。但是,由于人为规定了ASCII编码,又因为人们为了方便阅读二进制的内容,十六进制编辑器,其实质上编辑的还是二进制的内容。只不过,是以2位十六进制数字来表示而已了。
当然了,如果你看着十六进制的数字不顺眼,也完全可以转换为二进制数字或八进制、十六进制,甚至是ASCII所显示的文字内容(ASCII文本模式),来进行显示和编辑二进制的内容,大部分的十六进制编辑器,都是支持转换显示二进制内容的格式的。
最后,你说:“我不干,我要以BMP或JPEG的像素点为单位,显示和编辑二进制内容。”当然没有人拦着你。~~但是,如果你做出了这么一个编辑器,真的会有人用吗?(PC-3000和Flash Extractor,好像还真是这么做的...)