从十六进制字符串中删除0x

7
val1 = hex(100)
val2 = hex(50)
val3 = hex(int(val1, 16) - int(val2, 16))

hex_str = str(val1) + str(val2) + str(val3)

print(hex_str)

在上面的例子中,我的目标是得到一个类似于这样的字符串:643232
但是当前结果中,字符串变成了0x640x320x32
在Python中,有没有一种方法可以从十六进制字符串的开头删除0x
还是说我需要使用像re.sub()这样的正则表达式来删除它?
编辑:我还需要确保我得到的始终是两个字符。例如,如果我正在查找5的十六进制值,我将得到05

2
使用string formatting - spectras
2
在Python3.6中:val1 = f'{100:x}' - Robᵩ
2
@Skitzafreak> 具有字符串格式化的完整代码:"{:x}{:x}{:x}".format(val1, val2, val3) - spectras
2
将格式说明符从x更改为02x,如此答案中所述,转换为Python十六进制。 因此,format(3,'02x')将给出'03'。 " 02部分告诉format()至少使用2个数字,并使用零填充到长度,x表示小写十六进制。" 对于您的最后一个操作,您的格式将是"{:02x}{:02x}{:02x}" .format(100, 50, 50) - Steven Rumbalski
1
@StevenRumbalski 完成了! - Ashwini Chaudhary
显示剩余3条评论
1个回答

2
尝试:
val1 = hex(100)[2:]
val2 = hex(50)[2:]
val3 = hex(int(val1, 16) - int(val2, 16))[2:]

hex_str = str(val1) + str(val2) + str(val3)

print(hex_str)

谢谢。我不知道你可以在hex()的末尾使用[2:] - Skitzafreak
2
不要那样做。使用正确的工具来完成任务,即 Python 字符串格式化。例如:"{:x}".format(100) - spectras
1
@ spectras 或者简单地使用 format(100, 'x') - Ashwini Chaudhary
1
无论你最喜欢哪种格式 :). 关键是不要将其转换为不需要的格式,然后破坏输出,这只会浪费资源。 - spectras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接