Python 处理字节序列小结:一文了解ASCIII码、理解进制、进制转换(小白也能懂)

这段时间接触了之前没有遇到过的字节序列问题,发现这块坑特别多,在此做出小结以便复习。

1. ASCII

1.1 认识ASCII表

在这里插入图片描述

更详细内容可以点击:认识ASCII表

1.2 查看ASCII码符号:chr()

用法格式:chr(任意进制的数字),其参数的十进制范围是0~255的整数,结果返回一个对应的字符。(chr即为字符character的缩写)

  • 查看二进制对应的ASCII编码符号:chr(32),结果为' '(空格)
  • 查看八进制对应的ASCII编码符号:chr(0o67),结果为7
  • 查看十六进制对应的ASCII编码符号:chr(0x24),结果为$

2. 理解进制

2.1 何为进制n进制 = 低位由n个数字组成,且逢n进位

根据上面的ASCII表

  • 观察十进制
    最低位:由0、1、2、...、910个数字组成,且每10进1位
  • 观察八进制
    最低位由0、1、...、88个数字组成,且每8进1位
  • 观察十六进制
    最低位由0、1、2、...、9、...、D、E、F,这16个数字(后6个用字母A-F组成)组成,每16进1位
  • 再观察没那么明显的二进制,其实也是同理!
    最低位由0和12个数字表示,且每2进1位。

2.2 何为“位”1位 = 一个占位(可以用0或1表示)(简单理解)

比如:

  • 八位二进制:'0b11111111' (表示255,0b是二进制的标识)
  • 两位十六进制:'0x20'(表示32,0x是十六进制的标识)

进一步理解:

  • n位二进制数能表示的范围区间是:0~2n-1,比如八位二进制数能表示0b00000000 ~ 0b11111111,即0~255的大小(共28=256个数字)
  • n位十六进制数能表示的范围区间是:0~16n-1,比如二位十六进制数能表示0x00 ~ 0xff,即0~255的的大小(共162=256个数字)
  • 推广n位m进制数能表示的范围区间是:0 ~(mn-1-1),注意,减1!因此可以总结出
    • 1 位二进制最多表示 1;2 位二进制数最多表示3;3 位二进制数最多表示7;4 位二进制数最多表示15;而8位二进制数最多表示255

    • 1 位十六进制最多表示152 位十六进制数最多表示255,所以十六进制更高效啊 !

    • 因此这里可以得出一个结论:2位十六进制 = 8位二进制 = 1 byte (最多占用的内存大小)

      一个字节存储8位无符号数,储存的数值范围为0-255。
      在这里插入图片描述

2.3 进制(计算的)本质:取相应权重累加

或者说如理解不同进制下、不同位所表示的(十进制)大小

比如:

  • 二进制换算:0b0111= 0*23 + 1*22 + 1*21 + 1*20 = 19
  • 十六进制换算:0x1f = 1*161 + f*160 = 31(注意f代表15而不是16)

3. 进制转换

3.1 转为十进制:int()

其使用格式为:int(n进制数字字符串, n),注意int()的第一个参数为数字的字符串形式

  • 十六进制转为十进制:int('0x20', 16),结果:2*161=32
  • 二进制转为十进制:int('10001000', 2),结果:1*27+ 1*23 = 128+8=136
  • 八进制转十二进制:int('32', 8),结果:3*81+2*80=26

3.2 转为二进制:bin()

其使用格式为:bin(十进制数字)

  • 十进制转二进制:bin(8)结果为'0b1000'
  • 十六进制转二进制:bin(int('0x88', 16))结果为'0b10001000'
  • 八进制转二进制:bin(int('0o32', 8))结果为'0b11010'

3.3 转为十六进制:hex()

其使用格式为:hex(十进制数字),即hex()接受**(十进制)整型**作为其参数,所以有必要必须要做一下转换。

  • 十进制转十六进制:hex(32),结果为'0x20'
  • 二进制转十六进制:hex(int('10001000', 2)),结果为'0x88'
  • 八进制转十六进制:hex(int('32', 8)),结果为'0x1a'

3.4 转为八进制:oct()

其使用格式为:oct(任意进制的数字),注意oct()的参数为数字,而不是字符串。

  • 二进制转八进制:oct(0b1010),结果为'0o12'
  • 十进制转八进制:oct(40),结果为'0o50'
  • 十六进制转八进制:oct(0x88),结果为'0o210'

3.5 小结

  • 重要:只有十进制是整型(int)其它进制都是字符串型(str)
    因此int()函数的参数必须是str类型
  • 注意各种进制数字的表示:二进制的输入前面加0b,同理十六进制数字前面加0x。也可以观察到,八进制的Python显示为0o开头。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值