我需要将十进制转换为格式为 b'\xVALUE' 的十六进制字节值。 如果 VALUE 小于 10,则应该用零填充,例如b'\x01'.
我试过以下方法:
chr() 函数:给出预期结果,例如30,但不是像 255 这样的值。
>>> bytes(chr(30), 'utf-8')
b'\x1e'
>>> bytes(chr(255), 'utf-8')
b'\xc3\xbf' (expected: b'\xff')
这个方法我也试过
bytes(hex(VALUE), 'utf-8')
或
"0x%0.2X" % VALUE
或
bytes.fromhex(str(high_byte))
然后我试了这个:
hex(VALUE).replace('0x', '\\x').encode().decode('unicode_escape').encode("raw_unicode_escape")
这适用于长度为 2 或更大的十六进制值,但不适用于例如1
hex(1).replace('0x', '\\x').encode().decode('unicode_escape').encode("raw_unicode_escape")
给予
UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position 0-2: truncated \xXX escape
有没有什么方法可以从 hex() 函数(例如 hex(1) == '0x01')中使用 \x 而不是字节对象中的 0x 获取格式?