Python中拼接两个十六进制字符串报错的问题排查
问题原因与解决方案
这个坑我之前踩过!你遇到的ValueError根源在于调用int()函数时没有指定进制参数。
默认情况下,int()会把传入的字符串当作十进制数值来解析,但你的字符串'0x15'里包含了十进制中不存在的x字符,这就导致解析失败,直接抛出了“无效的十进制字面量”错误。
修复方法
只需要在调用int()时加上第二个参数16,明确告诉Python:“这是一个十六进制格式的字符串,按十六进制解析它!”。不管字符串带不带0x前缀,int()都能正确识别并转换。
修正后的代码如下:
a = '0x15' b = '0x18' # 指定进制为16来解析十六进制字符串 combined = hex( (int(a, 16) << 8) | int(b, 16) ) print(combined) # 输出结果:'0x1518'
额外说明
如果你的十六进制字符串没有0x前缀(比如a='15'),同样可以用int(a,16)来转换,0x只是十六进制的标识前缀,int()函数会自动忽略它。
内容的提问来源于stack exchange,提问作者JohnDoe
相关产品推荐
相关产品推荐

