如何将十六进制列表转换为 ASCII 值列表?
How to convert a hex list to a list of ASCII values?
让我们以十六进制字符串 0x790x760x7d0x7d0x80 为例。
ct=input()
hex_list=ct.split('0x')
print(hex_list)
ascii_values=[]
for i in hex_list:
if i!="" :
(ascii_values).append(ascii(i))
print(ascii_values)
我得到这个输出:
['', '79', '76', '7d', '7d', '80']
["'79'", "'76'", "'7d'", "'7d'", "'80'"]
但所需的输出将是转换为 ASCII 的十六进制值。
您可以将字符串视为一系列由四个字符组成的组。从每个组中,使用字符串切片和 zip()
删除 0x
前缀,然后您可以使用 map()
将 zip()
中的元组转换为表示所需十六进制值的字符串。
从那里,您可以将这些字符串转换为所需的字符,使用 int()
获取字符串表示的整数值,并使用 chr()
获取相应的 ASCII 字符。
data = "0x790x760x7d0x7d0x80"
ascii_values = list(map(''.join, zip(data[2::4], data[3::4])))
result = [chr(int(val, 16)) for val in ascii_values]
print(result)
这输出:
['y', 'v', '}', '}', '\x80']
这会将字节列表转换为 ASCII,但 0x80 是无效的 ASCII 字符代码。见下文:
ct = '0x790x760x7d0x7d0x80'
hex_list = ct.split('0x')
ascii_values=[]
for i in hex_list:
print(i)
if i != '':
try:
bytes_object = bytes.fromhex(i)
ascii_string = bytes_object.decode("ASCII")
ascii_values.append(ascii(ascii_string))
except UnicodeDecodeError:
print('Invalid ASCII... skipping...')
print(ascii_values)
查看关于 0x80 的答案 here。
让我们以十六进制字符串 0x790x760x7d0x7d0x80 为例。
ct=input()
hex_list=ct.split('0x')
print(hex_list)
ascii_values=[]
for i in hex_list:
if i!="" :
(ascii_values).append(ascii(i))
print(ascii_values)
我得到这个输出:
['', '79', '76', '7d', '7d', '80']
["'79'", "'76'", "'7d'", "'7d'", "'80'"]
但所需的输出将是转换为 ASCII 的十六进制值。
您可以将字符串视为一系列由四个字符组成的组。从每个组中,使用字符串切片和 zip()
删除 0x
前缀,然后您可以使用 map()
将 zip()
中的元组转换为表示所需十六进制值的字符串。
从那里,您可以将这些字符串转换为所需的字符,使用 int()
获取字符串表示的整数值,并使用 chr()
获取相应的 ASCII 字符。
data = "0x790x760x7d0x7d0x80"
ascii_values = list(map(''.join, zip(data[2::4], data[3::4])))
result = [chr(int(val, 16)) for val in ascii_values]
print(result)
这输出:
['y', 'v', '}', '}', '\x80']
这会将字节列表转换为 ASCII,但 0x80 是无效的 ASCII 字符代码。见下文:
ct = '0x790x760x7d0x7d0x80'
hex_list = ct.split('0x')
ascii_values=[]
for i in hex_list:
print(i)
if i != '':
try:
bytes_object = bytes.fromhex(i)
ascii_string = bytes_object.decode("ASCII")
ascii_values.append(ascii(ascii_string))
except UnicodeDecodeError:
print('Invalid ASCII... skipping...')
print(ascii_values)
查看关于 0x80 的答案 here。