如何设置Python切片实现十六进制数值按字节反转
十六进制按字节反转实现方案
问题原因
你现有代码的切片逻辑是直接反转所有十六进制字符的顺序:
输入0x123456转为字符串后为"0x123456",切片[-1:1:-1]会去掉前两位0x,直接反转剩余字符得到"654321",最终输出0x654321,和你需要的按字节(每2个十六进制字符对应1字节)反转组顺序的需求不符。
调整方案
核心逻辑改为:先去掉0x前缀,补前导0保证字符串长度为偶数,再按2字符为一组拆分,反转组的顺序后拼接即可。
调整后代码
import string valueh = 0x123456 # 去掉0x前缀,得到纯十六进制字符串 hex_raw = str(valueh)[2:] # 长度为奇数时补前导0,保证每2位对应1字节 if len(hex_raw) % 2 != 0: hex_raw = '0' + hex_raw # 按2位一组拆分,反转组顺序后拼接 reversed_group_hex = ''.join([hex_raw[i:i+2] for i in range(0, len(hex_raw), 2)][::-1]) if all(x in string.hexdigits for x in reversed_group_hex): d = int(reversed_group_hex, 16) print(hex(d))
效果验证
输入0x123456时,纯十六进制字符串为123456,拆分后得到组列表['12', '34', '56'],反转组顺序得到['56', '34', '12'],拼接后为563412,最终输出0x563412,符合需求。
内容的提问来源于stack exchange,提问作者scll.raz
相关产品推荐
相关产品推荐

