进制与字符串转换

  1. 字符串转十六进制
 1 #方法1:
 2 #!/usr/bin python3
 3 #-*-coding=utf-8-*-
 4 import binascii
 5 
 6 #若传入的是二进制串,可用以下函数
 7 def str_to_hex1(s):    #s=b'hello'
 8     s=binascii.hexlify(s) #hexlify()传入的参数也可以是b'xxxx'(xxxx要符合16进制特征)
 9     print(s.decode('utf-8')) #s的类型是bytes类型,用encode()方法转化为str类型
10 
11 #若传入的是文本串,可以用一下函数
12 def str_to_hex2(s): #s="hello"
13     print("".join([hex(ord(c)).replace('0x','') for c in s]))
14 
15 #方法2:
16 # base = input("请输入要转换的字符串:")
17 base = '$GPGGA,,,,,,0,,,,,,,,*66\r\n'
18 by = bytes(base, 'UTF-8')  # 先将输入的字符串转化成字节码
19 hexstring = by.hex()  # 得到16进制字符串,不带0x
20 print(hexstring)
21 
22 # 输出如下:
23 # 请输入要转换的字符串:大多数
24 # e5a4a7e5a49ae695b0
25 
26 a = int(hexstring,16)    #将16进制字符串转换成整数
27 hex_name = hex(a)  # 得到16进制字符串,带0x;输出如下
28 
29 # 请输入要转换的字符串:大声
30 # 0xe5a4a7e5a3b0

       2.十六进制转字符串

 1 #方法1:
 2 import base64
 3 
 4 hex_str = '2447504747412c2c2c2c2c2c302c2c2c2c2c2c2c2c2a36360d0a'
 5 print(base64.b16decode(hex_str.upper()))
 6 #b'$GPGGA,,,,,,0,,,,,,,,*66\r\n'
 7 
 8 #方法2:
 9 import binascii
10 
11 def hexStr_to_str(hex_str):
12     hex = hex_str.encode('utf-8')  #将其转为16进制数
13     str_bin = binascii.unhexlify(hex)  #转为该16进制对应的ascii字符串
14     return str_bin.decode('utf-8') #再转为字符串
15 
16 if __name__ == "__main__":
17     hex_str = '2447504747412c2c2c2c2c2c302c2c2c2c2c2c2c2c2a36360d0a'
18     print(hexStr_to_str(hex_str))
19     #$GPGGA,,,,,,0,,,,,,,,*66
20 
21 
22 #方法3:
23 #!/usr/bin python3
24 #-*-coding=utf-8-*-
25 import binascii
26 
27 #若传入的是一连串16进制串,可用以下函数
28 def hex_to_str1(s):    #s="68656c6c6f"
29     s=binascii.unhexlify(s) #unhexlify()传入的参数也可以是b'xxxx'(xxxx要符合16进制特征)
30     print(s.decode('utf-8')) #s的类型是bytes类型,用encode()方法转化为str类型
31 
32 #若传入的是用空格隔开的16进制串,可以用一下函数
33 def hex_to_str2(s): #s="68 65 6c 6c 6f"
34     print("".join([chr(i) for i in [int(b,16) for b in s.split(' ')]]))
35 
36 hex_to_str2('24 47 4E 47 53 41 2C 41 2C 31 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2A 32 43 0D 0A')
37 #$GNGSA,A,1,,,,,,,,,,,,,,,,*2C

 

posted @ 2022-11-02 11:28  小鱼小鱼hi  阅读(206)  评论(0编辑  收藏  举报