如何无需自定义函数实现Python struct反向解包获取指定字符串?
实现方法
不需要自定义函数的话,有两种简洁的实现方式:
方法一:利用位运算和字符串生成器
直接对每个字节做位拆分,提取低4位和高4位后转成字符串拼接:
data = b"\x10\x32\x54\x76\x98" result = ''.join(f'{(byte & 0x0F)}{(byte >> 4)}' for byte in data) # 输出:'0123456789'
原理:每个字节通过byte & 0x0F提取低4位数值,byte >> 4右移4位得到高4位数值,再将两个数值转为字符串后拼接,最后把所有字节的结果连起来。
方法二:借助binascii模块处理十六进制字符串
先把字节序列转成十六进制字符串,再反转每两位的顺序后拼接:
import binascii data = b"\x10\x32\x54\x76\x98" hex_str = binascii.hexlify(data).decode() result = ''.join(hex_str[i+1] + hex_str[i] for i in range(0, len(hex_str), 2)) # 输出:'0123456789'
原理:binascii.hexlify会把每个字节转成两位十六进制字符(比如\x10转成'10'),之后遍历字符串,每两位一组反转顺序,最终拼接成目标结果。
内容的提问来源于stack exchange,提问作者admfotad
相关产品推荐
相关产品推荐

