在内存中,数据都是以byte 为单位存储在内。当程序文件加载到内存中,才能运行。1 byte =8bit,即8个0或1组成的序列。所以内存中都是0和1。比如对于内存中的一段bit序列01100001,如果赋予它为整数类型,它就代表十进制的97或十六进制的61(0x61);如果把它看做一个字符串,查ASCII码表,它就是字母a。所有的文件不论它是什么格式,都可以用记事本打开。因为文件加载在内存中都是连续的bytes,用ASCII码表来解码,是没有问题的,只不过显示的效果有出入。为了方便内存中的操作,Python 中引入了不可变的Bytes数据结构和可变的Bytearray数据结构。

ASCII码表    在ASCII码表中,大写字母A~Z是十六进制数41到5A,小写字母是十六进制数61到7A。大写字母用二进制表示的话是从: 01000001   到   01011010 小写字母是从: 01100001   到   01111010 对比可以看出,差别在二进制从右往左第6位(b5)上,小写比大写多1,这可以理解为字母大小写切换的开关位,单击键盘上的“caps lock”或长按shift就与其有关。同样的,在主键盘区上,除了字母外一个键位通常对应两个符号,比如在1和!在一起,3和#在一起,等等。查ASCII码表也能找到shift键作为开关键的依据。可见,ASCII码表在设计时就是考虑了人类常用字符与交互工具-键盘的键位对应。