【问题标题】:hex() argument cannot be converted to hexhex() 参数不能转换为十六进制
【发布时间】:2025-12-01 07:25:01
【问题描述】:

我正在尝试执行以下操作;

pin = hex("2FFF6996").replace('L', '').upper()[2:].zfill(8)

但是我收到一个错误 - hex() 参数无法转换为十六进制。

任何帮助将不胜感激!

【问题讨论】:

  • pin = "2FFF6996" 怎么样?
  • @alko hex() 也可以输出L。在 Python 2 上尝试hex(2**32)
  • @JanneKarila 你是对的,谢谢
  • "2FFF6996" 是您实际代码中的变量吗?您应该能够处理哪些类型?
  • 你到底想达到什么目的?

标签: python hex


【解决方案1】:
pin = hex(int("2FFF6996".replace('L', '').upper()[2:].zfill(8), 16))

>>> pin
'0xff6996'

如果您希望字符串中的数字像%X 参数一样传递给print 函数,您可以删除upperhex

>>> pin = int("2FFF6996".replace('L', '')[2:].zfill(8), 16)
>>> pin
16738710
>>> print "0x%X" % pin
0xFF6996

【讨论】:

  • 谢谢,这行得通。但是,我将 pin 变量传递给另一个函数,该函数采用 %X。不确定我做对了,因为我收到 TypeError - %X format: a number is required, not a str
  • @TomSothcott 只留下 int:pin = int("2FFF6996".replace('L', '').upper()[2:].zfill(8), 16)
【解决方案2】:

Hex 需要一个数字,因此有效的选项是:

hex(0x2FFF6996) # hex
hex(805267862) # 10 base
hex(05777664626) # 8 base

这些都会产生以下结果: '0x2fff6996'

【讨论】:

    【解决方案3】:

    hex 将整数转换为十六进制字符串(请参阅docs)因此出现错误。

    您似乎已经有一个十六进制字符串,除了前导“0x”,所以这可能会满足您的需要:

    "2FFF6996".replace('L', '').upper()[2:].zfill(8)
    

    【讨论】: