【发布时间】:2018-01-02 03:33:13
【问题描述】:
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
【问题讨论】:
-
在 Python3.6 中:
val1 = f'{100:x}' -
@Skitzafreak> 带字符串格式的完整代码:
"{:x}{:x}{:x}".format(val1, val2, val3). -
将格式说明符从
x更改为02x,如this answer 至python hexadecimal 中所述。所以format(3, '02x')会给你'03'。 “02部分告诉format()使用至少 2 位数字并使用零来填充长度,x表示小写十六进制。”对于您的最后一次操作,您的格式为"{:02x}{:02x}{:02x}".format(100, 50, 50) -
@StevenRumbalski 完成!
标签: python