八进制、十六进制与十进制的转换,bytes的十六进制
二进制、八进制、十六进制与十进制的不同顾名思义在于进位不同:
十进制遇十进一,9+1=10,19+1=20,199+1=200。相同数字前一位是后一位的十倍,例如11,前一个代表10,后一个是1。
一、八进制
八进制遇八进一,7+1=10,17+1=20,27+1=30。相同数字前一位是后一位的八倍,例如11,前一个代表8,后一个是1;
故八进制换十进制:
11(八进制)=1*8+1=9(十进制);
654(八进制)=6*8*8+5*8+4=428(十进制)
十进制换八进制:除k取余法,将十进制数除以转换进制数,倒过来取余数,得转换进制数。
129/8=16余1,16/8=2余0,2/8=0余2,
故十进制的129八进制应为201(验证:2*8*8+1=129)
572/8=71余4,71/8=8余7,8/8=1余0,
故十进制的572八进制应为1074(验证:1*8*8*8+7*8+4=572)
二、十六进制
同理八进制,十六进制是遇十六进一,除了1-9以后还有代表10-15的ABCDEF,其中A代表10,B代表11,以此类推。
故十六进制换十进制:
EF(十六进制)=14*16+15=239(十进制),
5A(十六进制)=5*16+10=90(十进制)
故十六进制换十进制:
895/16=55余15,55/16=3余7,3/16=0余3,
故十进制的895十六进制应为37F
三、bytes的十六进制
计算机进行的是二进制计算,四位二进制1111最大表示十进制的15,十六进制一位最大也是表示十进制的15,所以一位十六进制刚好可以换算为四位二进制,不多不少,为了传输和存储信息方便,一般用十六进制代替四位二进制。
python中的bytes就是由十六进制组成的数字。