16进制在python里实际是以16进制字符串保存的,在处理时要注意去掉‘0x’
下面给出互转的两个方法,10进制一个方法,16进制一个方法,实际互通
1. ASCII码转10进制
#ascii码转10进制
def to_hex(s):
e = 0
for i in s:
d = ord(i) # 单个字符转换成ASCii码
e = e * 256 + d # 将单个字符转换成的ASCii码相连
return e
#bbb = '12345'
#ccc = to_hex(bbb)
#输出为 211295614005
2. ASCII码转16进制
def to_hex(s):
list_h = []
for c in s:
list_h.append(str(hex(ord(c)))[2:]) # 取hex转换16进制的后两位
return ''.join(list_h)
#bbb = '12345'
#ccc = to_hex(bbb)
#输出为 ‘3132333435’
3. 10/16进制转ASCII码的两种方法
#此种方法需import binascii
def to_ascii(h):
list_int = list(binascii.a2b_hex(hex(int(h))[2:]))
list_s = []
for i in list_int:
list_s.append(chr(i))
return ''.join(list_s)
def to_ascii1(h):
list_s = []
for i in range(2, len(h), 2):
list_s.append(chr(int(h[i:i + 2], 16)))
return ''.join(list_s)
#输入211295614005,即(0x3132333435),输出为‘12345’