首页 > 解决方案 > 将十六进制值存储为整数

问题描述

我目前正在使用 python docx,例如它需要十六进制值来格式化字体颜色

font.color.rgb = RGBColor(0x70, 0xad, 0x47)

但是,我需要将参数存储RGBColor在一个变量中,准确地说是一个字典,但是当您将一个十六进制值存储在一个变量中时,它会将其格式化为一个 int。例子:

code = (0x70, 0xad, 0x47)

print(code)

返回:(112, 173, 71)

并使用该hex()函数存储它会将其格式化为str.

code = (hex(0x70), hex(0xad), hex(0x47))

print(code)

返回:('0x70', '0xad', '0x47')

并且RGBColor操作员将不接受字符串,并且我无法将这些字符串重新格式化为 anint因为我收到错误ValueError: invalid literal for int() with base 10: '0x70'

总之,我如何存储一个十六进制值,例如0x70, 0xad, 0x47一个整数,然后我可以将其输入到RGBColor操作员中?

标签: pythonhexpython-docx

解决方案


font.color.rgb = RGBColor(112, 173, 71)

产生与以下相同的结果:

font.color.rgb = RGBColor(0x70, 0xad, 0x47)

0x7f格式只是int值的另一种 Python 文字形式。只有一种int,只有多种方式可以将相同的值表示为文字。有关这些选项的完整细分,请参阅有关数字文字的 Python 文档: https ://docs.python.org/3/reference/lexical_analysis.html#numeric-literals

请注意,您还可以使用:

font.color.rgb = RGBColor.from_string("70ad47")

如果这对你更方便。
https://python-docx.readthedocs.io/en/latest/api/shared.html#docx.shared.RGBColor.from_string


推荐阅读