【问题标题】:Remove 0x from Hex String [duplicate]从十六进制字符串中删除 0x [重复]
【发布时间】: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


【解决方案1】:

尝试:

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:]的事情
  • 不要那样做。为工作使用正确的工具,python 字符串格式化。即:"{:x}".format(100)
  • @spectras 或者简单的format(100, 'x')。
  • 你最喜欢哪个:)。关键是没有转换为不想要的格式,然后-mangle-the-output,这只是在浪费资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多