Python中如何将输入字符串"\E8\x03"转换为数值1000(0x3E8)?
解决字符串转数值1000的问题
没问题,咱们来拆解这个问题:你收到的字符串"\E8\x03"其实对应两个字节0xE8和0x03,而数值1000(也就是十六进制的0x3E8)是这两个字节按小端字节序组合后的结果(小端规则是低字节在前,高字节在后)。根据你接收字符串的不同形式,这里有两种常见的实现方式:
情况1:接收的是原始字节转成的字符串
如果你的输入字符串是直接从字节流转换而来的(每个字符对应一个原始字节,比如实际收到的是"\xe8\x03"),可以这样处理:
# 假设这是你从其他程序接收到的字符串 received_str = "\xe8\x03" # 将字符串转回字节串(使用latin-1编码,确保单字节字符和字节一一对应) byte_data = received_str.encode('latin-1') # 按小端字节序将字节串解析为整数 result = int.from_bytes(byte_data, byteorder='little') print(result) # 输出:1000
情况2:接收的是带转义标记的字符串
如果你的输入是带转义文本的字符串(比如字符串里存储的是\E8\x03这样的转义字符文本,即原始字符串为r"\E8\x03"),需要先把转义标记转换成实际字节:
import codecs # 假设这是你收到的带转义标记的字符串 received_str = r"\E8\x03" # 修正转义符:把非标准的\E替换为标准的\x(这里应该是输入时的笔误) fixed_str = received_str.replace('\E', '\x') # 将转义字符串解码为字节串 byte_data, _ = codecs.escape_decode(fixed_str) # 按小端字节序解析为整数 result = int.from_bytes(byte_data, byteorder='little') print(result) # 输出:1000
补充说明:为什么用小端字节序?
因为1000的十六进制是0x3E8,拆分后低8位是0xE8(对应十进制232),高8位是0x03(对应十进制3)。小端字节序会把低字节放在前面,所以组合计算就是:0x03 << 8 | 0xE8 = 3*256 + 232 = 1000,刚好得到你需要的数值。
内容的提问来源于stack exchange,提问作者Soumil Deshpande
相关产品推荐
相关产品推荐

