我想将 ASCII 十六进制编码的字节数组转换为直接字节
`` hex_data = b'010203040a0b0fff'
data = bytearray.fromhex(hex_data)``
但这不起作用,因为 fromhex 方法需要字符串而不是字节数组。 我可以添加一个额外的步骤,例如:
data = bytearray.fromhex(hex_data.decode())
这应该可行,但是这会增加一个额外的处理过程以及一个由 GC 处理的对象。 最终目标是还反转字节数组,以便创建一个数组并将其反转。
目前我使用的是纯Python编程算法,效果很好
每秒执行第 100 次,并开始消耗一些大量的 CPU 时间。
这适用于 Python 3.7
最终目标也是反转字节数组,以便创建一个数组并将其反转。
您可以在不进行字符串解码的情况下反转它,但您仍然需要以一种或另一种方式将十六进制 ascii 文字转换为数字。而且还是手术。
>>> hex_data = b'010203040a0b0fff'
>>> numbers = [int(hex_data[i : i + 2], 16) for i in range(0, len(hex_data), 2)]
>>> numbers
[1, 2, 3, 4, 10, 11, 15, 255]
>>> bytearray(reversed(numbers))
bytearray(b'\xff\x0f\x0b\n\x04\x03\x02\x01')