二進制、八進制、十六進制與十進制的不同顧名思義在於進位不同:
十進制遇十進一,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就是由十六進制組成的數字。