Python 初学者的疑问。如何将具有十六进制值的数组转换为字节?

Doubts for beginners in Python. How do I convert an array with hexadecimal values ​to bytes?

提问人:dev-python 提问时间:11/17/2023 最后编辑:dev-python 更新时间:11/17/2023 访问量:56

问:

# Recebe o número de 4 dígitos como input
number = input("Digite o número da Conta com 4 dígitos: ")

# Converte cada caracter em uma string e armazena em um array
number_array = list(number)

# Converte os valores '0' em '10' no array
for i in range(len(number_array)):
    if number_array[i] == '0':
        number_array[i] = '10'

# Converte os valores nesse array em hexadecimal
hex_array = [hex(int(num))[2:] for num in number_array]

# Adiciona um 0 antes de cada string dentro do array
final_array = ['0' + num for num in hex_array]

print(final_array)

bytes_sent = ('\x11\xb0\x12') + (final_array[0]) + (final_array[1]) + (final_array[2]) + (final_array[3]) + ('\x01\x08\x01\x01\x02\x02\x0a\x0a\x02\x0a\x02\x40')

print(bytes_sent)

我正在尝试使用数组来填充它

bytes_sent = b'\x11\xb0\x12\x05\x0a\x0a\x0a\x01\x08\x01\x01\x02\x02\x0a\x0a\x02\x0a\x02\x40'

但不起作用


bytes_sent = '(\x11\xb0\x12)' + (final_array[0]) + (final_array[1]) + (final_array[2]) + (final_array[3]) + '\x01\x08\x01\x01\x02\x02\x0a\x0a\x02\x0a\x02\x40')

有没有办法通过从数组导入值来发送这种格式的字节?在此处输入图像描述

Python 数组十六 进制

评论

0赞 rabbibillclinton 11/17/2023
欢迎使用 Stack Overflow。你想做什么?也许我不明白,因为其中一些是西班牙语的,但这段代码非常令人困惑。尤其是倒数第二行。bytes_enviados
0赞 Mark Tolonen 11/17/2023
输入是什么样的?这将有助于将代码转换为具有清晰输入和当前与所需输出的英语。不要使用文本图像,将其作为文本放在问题中。
0赞 juanpa.arrivillaga 11/17/2023
例如,您的目标是获取一个带有 4 位整数的字符串并将其转换为字节吗?什么是具有相应输出的示例输入?"1234"
0赞 dev-python 11/17/2023
我只想把这个数组 hex_array = [05,0a,03,0a] 变成这个: bytes_sent = b'\x05\x0a\x03\x0a 格式,但带有数组值,对不起,我的英语不好
0赞 J_H 11/17/2023
请不要上传代码/数据/错误的图像。

答:

0赞 J_H 11/17/2023 #1

你的问题不是很清楚。 但似乎您正在寻找 binascii 模块。

>>> import binascii
>>> 
>>> bytes_sent = b'\x11\xb0\x12\x05\x0a\x0a\x0a\x01\x08\x01\x01\x02\x02\x0a\x0a\x02\x0a\x02\x40'
>>> 
>>> binascii.hexlify(bytes_sent)
b'11b012050a0a0a0108010102020a0a020a0240'
>>> 
>>> binascii.unhexlify('11b012050a0a0a0108010102020a0a020a0240')
b'\x11\xb0\x12\x05\n\n\n\x01\x08\x01\x01\x02\x02\n\n\x02\n\x02@'

如果您还有一些用例,则 要求将0x00映射到0x0a,好吧,这取决于你。