我新建一个文件,并以二进制形式往里写入大写字母 A 的 ASCII 所对应的 01000001 ,按理说,把文件以文本格式打开,显示的应该是 A ,占用一个字符,但结果显示是 01000001 ,占用 8 个字符
fd = open('./a.test', 'xb')
fd.write(b'01000001')
为什么呢?是因为缺少 EOF 之类控制字符吗,在写入进文件时被 IDE 直接优化成文本吗?又或者打开时被文本软件优化了?
对于一个二进制文件,以文本格式打开,文本软件会把二进制 bit 按照每 8bit 算作一个字符对照 ascii 编码表翻译,而 ascii 最大值是 01111111 ,也就是说如果有 8bit 大于这个数,如 10111111 ,因为找不到参照,文本软件就会显示乱码是吗?乱码字符对应的那个图案是从哪找的呢?
还有如果二进制文件的大小不是 8bit 整数倍,假如最后剩下 3bit ,文本软件也会显示乱码吗?
所以有了 base64 ,使用 6bit 全部占满的编码方式重新编码二进制文件,保证不会出现乱码,然后在网页和邮件中传输是吗?但实际没必要,直接在网络中使用原始二进制传输也可以,只是网页和邮件的协议要求而已,对吗?