编码类型转换
常见编码类型
- 以
41
开头的字符串一般是hex
编码; - 以
T
开头的字符串一般是base58
编码, 如波场币地址TWRwG6JGU7sw4NrjprZVkgMp4tHNejEU7Y
; - 以
0x
开头的字符串一般是hex
编码, 如以太网地址0x0ca19fd64c08f3dfc5fc3080597d85b04cbfbf93
;
编码格式的转换
-
将二进制编码(
bytes
类型) 与base58`编码相互转化;import base58 # 将二进制字符串转化成base58 # 输出的字符串前面会带有b,如 b'TGvfjtHih9kf15R2f3fJDW8P8eQEa764uE' base58.b58encode_check(bytes_string) # 输出的字符串前面没有 b,如 'TGvfjtHih9kf15R2f3fJDW8P8eQEa764uE' base58.b58encode_check(bytes_string).decode('utf-8') # 将base58转化成二进制 base58.b58decode_check('TJRabPrwbZy45sbavfcjinPJC18kjpRTv8')
-
将 十六进制的字符串转换成二进制可以使用
bytes.fromhex()
, 需要把十六进制最前面的0x
去掉再转换; 把二进制类型转化为十六进制, 只需要调用.hex()
即可, 例如:def hex2bytes(string): return bytes.fromhex(string) hex_str = 'a7f1f03bf081b4f4e8b0993a8114c1987de6d5bf1582445fe048475dff942fd0' bytes_str = hex2bytes(hexstr) string = bytes_str.hex() print(string) # 'a7f1f03bf081b4f4e8b0993a8114c1987de6d5bf1582445fe048475dff942fd0'