十六进制 到 十进制
使用 int() 函数 ,第一个参数是字符串 '0Xff' ,第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。
>>> int('0xf',16)
15
二进制 到 十进制
>>> int('10100111110',2)
1342
八进制 到 十进制
>>> int('17',8)
15
其实可以看到,不管 几进制数 转换成 十进制数 ,都是用 int() 函数 。之后后面的 第二个参数 写清楚 前面字符串 是 几进制数就可以 。注意一定要合法。 比如2进制数就不能出现2这样的字符。
----------------------------------------------------------------------------------------------------------------------------
十进制 转 十六进制
>>> hex(1033)
'0x409'
二进制 转 十六进制
就是 二进制先转成 十进制, 再转成 十六进制。
>>> hex(int('101010',2))
'0x2a'
八进制到 十六进制
就是 八进制先转成 十进制, 再转成 十六进制。
>>> hex(int('17',8))
'0xf'
----------------------------------------------------------------------------------------------------------------------------
十进制转二进制
>>> bin(10)
'0b1010'
十六进制转 二进制
十六进制->十进制->二进制
>>> bin(int('ff',16))
'0b11111111'
八进制 到 二进制
八进制先到十进制,再到二进制
>>> bin(int('17',8))
'0b1111'
----------------------------------------------------------------------------------------------------------------------------
二进制 到 八进制
>>> oct(0b1010)
'012'
十进制到八进制
>>> oct(11)
'013'
十六进制到八进制
>>> oct(0xf)
'017'
可见oct 函数 可将 任意进制的数 转换成 8进制的。
PythonBasic/Python十进制、十六进制、字节串、字符串转换.md at master · daacheng/PythonBasic · GitHub
Python十进制、十六进制、字节串、字符串转换
整数之间进制转换
#十进制转换成十六进制
hex(10) #'0xa'
hex(11) #'0xb'
hex(15) #'0xf'
#十六进制转换为十进制
int('0xa',16) #10
int('ff',16) #255
int('f',16) #15
#十进制转换成二进制
bin(2) #'0b10'
bin(255) #'0b11111111'
bin(8) #'0b1000'
#十进制转换成八进制
oct(8) #'0o10'
oct(7) #'0o7'
oct(9) #'0o11'
字符串转换成整数
#十进制字符串转整数
int('10') #10
int('20') #20
#十六进制字符串转整数
int('f',16) #15
int('ff',16) #255
int('a',16) #10
int('11',16) #17
#二进制字符串转整数
int('1000',2) #8
int('1001',2) #9
#字节串转整数
import struct
struct.unpack('>II',bytes(b'\x01\x00\x00\x00\x01\x00\x00\x00')) #(16777216, 16777216)
#整数转换成字节串
struct.pack('>II',16777216, 16777216) #b'\x01\x00\x00\x00\x01\x00\x00\x00'
字符串转字节串
#字符串编码为字节码
'123abc'.encode('ascii') #b'123abc'
'123abc'.encode('utf-8') #b'123abc'
'123abc好'.encode('utf-8') #b'123abc\xe5\xa5\xbd'
#十六进制字符串转字节串
bytes.fromhex('ff011a') #b'\xff\x01\x1a'
#十六进制字符串转字节串
bytes(map(ord,'\xff\x01\x1a')) #b'\xff\x01\x1a'
#十六进制数组转字节串
bytes([0x01,0x02,0x03,0xff]) #b'\x01\x02\x03\xff'
字节串转字符串
#字节码解码为字符串
bytes(b'123abc\xe5\xa5\xbd').decode('utf-8') #'123abc好'
#字节串转16进制表示
str(bytes(b'123abc\xe5\xa5\xbd')) #"b'123abc\\xe5\\xa5\\xbd'"
str(bytes(b'123abc\xe5\xa5\xbd'))[2:-1] #'123abc\\xe5\\xa5\\xbd'
#字节串转换成16进制数组
[hex(i) for i in bytes(b'123')] #['0x31', '0x32', '0x33']