将十六进制字符串转换为 python3 中的字符
Convert hex string to characters in python3
我需要将 5555555547aa
之类的字符串转换为一串字符(即 �GUUUU
)。我有一个在下面发布的 python2 中工作的函数,但我无法在 python3 中正常工作。我该怎么做?
def hex_conv(hex_str):
arr = [hex_str[i:i+2] for i in range(0, len(hex_str), 2)]
rev = arr[::-1]
out_str = ""
for i in rev:
print(i)
out_str += ("\x" + i).decode("string_escape")
return out_str
更清楚我需要输出的内容(Python2):
print('\xaa\x47\x55\x55\x55\x55')
我试过了
print(bytes.fromhex("5555555547aa")[::-1].decode("utf-8", errors="replace"))
这不太行。它似乎产生相同的输出,但实际字节数不同。
注意:此输出将通过管道传输到另一个程序(用于二进制开发),因此需要准确打印字节。
您只需要合并 2 个步骤:使用 bytes.fromhex
从十六进制转换为字节串,并使用 sys.stdout.buffer.write
将字节串打印到标准输出。将它们放在一起:
import sys
sys.stdout.buffer.write(bytes.fromhex("5555555547aa")[::-1])
来源于hexadecimal string to byte array in python and
我需要将 5555555547aa
之类的字符串转换为一串字符(即 �GUUUU
)。我有一个在下面发布的 python2 中工作的函数,但我无法在 python3 中正常工作。我该怎么做?
def hex_conv(hex_str):
arr = [hex_str[i:i+2] for i in range(0, len(hex_str), 2)]
rev = arr[::-1]
out_str = ""
for i in rev:
print(i)
out_str += ("\x" + i).decode("string_escape")
return out_str
更清楚我需要输出的内容(Python2):
print('\xaa\x47\x55\x55\x55\x55')
我试过了
print(bytes.fromhex("5555555547aa")[::-1].decode("utf-8", errors="replace"))
这不太行。它似乎产生相同的输出,但实际字节数不同。
注意:此输出将通过管道传输到另一个程序(用于二进制开发),因此需要准确打印字节。
您只需要合并 2 个步骤:使用 bytes.fromhex
从十六进制转换为字节串,并使用 sys.stdout.buffer.write
将字节串打印到标准输出。将它们放在一起:
import sys
sys.stdout.buffer.write(bytes.fromhex("5555555547aa")[::-1])
来源于hexadecimal string to byte array in python and