【问题标题】:How to convert string to raw hexadecimal?如何将字符串转换为原始十六进制?
【发布时间】:2021-06-24 07:12:21
【问题描述】:

我有一个不和谐的机器人,它允许为配置添加默认颜色。

{
   "Embed-Default-Color": "0x000000"
}

它不允许没有“”的原始输入并导致使用问题:

with open("config.json") as f:
    config = json.load(f)

DEFAULT_COLOR = config.get("Embed-Default-Color")

em = discord.Embed(title="Hi", description="I'm Gabe Newell", color=DEFAULT_COLOR)

(代码仅用于上下文展示,没有找不到配置等错误)

错误返回TypeError: Cannot use string for argument discord.Colour => "0x000000"

如何将字符串转换为十六进制,而不让它转换任何内容,因为它已经是十六进制,但格式错误?

【问题讨论】:

  • 您是在问如何将包含十六进制的字符串转换为整数?为什么 int("0x000000",16) 不起作用?
  • 是的,成功了,非常感谢

标签: python string discord hex discord.py


【解决方案1】:

试试这个:

hexastr = "hexa value"
hexa = int("0x" + hexastr, 16)

【讨论】:

  • 这就是解决方案,完美无瑕,虽然我不知道为什么它必须这样嘿嘿
【解决方案2】:

python 有一个额外的十六进制数字转换选项hex(),所以你可以使用它:

with open("config.json") as f:
    config = json.load(f)

DEFAULT_COLOR = config.get("Embed-Default-Color")

em = discord.Embed(title="Hi", description="I'm Gabe Newell", color=hex(DEFAULT_COLOR))

【讨论】:

  • 这就是我尝试过的,但它首先尝试转换为 int 并抛出错误,因为那里有一个“x”,这是迫切需要的。 hex 也将整数转换为 16 位数字系统,即使提供的数字已经是十六进制数字,只需要声明
  • 所以也许你可以将十六进制保存为十六进制?所以没有任何字符串yk
【解决方案3】:

不要将其作为字符串传递,而是将其作为不和谐颜色对象传递。

em = discord.Embed(title="Hi", description="I'm Gabe Newell", color=discord.Colour(int(DEFAULT_COLOR,16)))

【讨论】:

  • discord.ext.commands.errors.CommandInvokeError:命令引发异常:TypeError:预期 int 参数,而是收到 str。在这种情况下它会抛出相同的错误
猜你喜欢
  • 2017-09-28
  • 2013-02-07
  • 2016-07-24
  • 1970-01-01
  • 2017-08-23
  • 2014-03-19
  • 1970-01-01
  • 2011-08-25
相关资源
最近更新 更多