【问题标题】:Bytes Object is Comma Separated Decimal Values (Python 3)字节对象是逗号分隔的十进制值(Python 3)
【发布时间】:2025-12-12 18:20:05
【问题描述】:
我在工作中与之交互的机器将其频率作为字节对象返回,如下所示:
b'192,232,206,0'
这个 little-endian(我认为这是正确的,我不擅长记住哪个是哪个)字节对象应该转换为十六进制字节对象 \x00\xCE\xE8\xC0,它转换为十进制为 13560000。我发现Python有int.from_bytes(),它接受十六进制字节对象并将其转换为一个很好的整数,但是当我将它应用于我的逗号分隔字节对象时,每个字节都是一个十进制值,我得到一个天文数字( 3816634650710199623094969186609 准确地说)。有谁能帮帮我吗?
【问题讨论】:
标签:
python-3.x
integer
byte
endianness
【解决方案1】:
这有点复杂,但您可以将十进制数字转换为十六进制字符串,并将它们的字节值组合成一个数字:
freq = b'192,232,206,0'
freq_bytes = b''
for decimal in freq.split(b','):
hex_str = hex(int(decimal))
if hex_str == '0x0':
hex_str += '0' # otherwise it won't convert
freq_bytes += bytes.fromhex(hex_str[2:]) # remove the 0x part
freq_int = int.from_bytes(freq_bytes, 'little')
给13560000