简体   繁体   中英

Storing hex values as integers

I am currently working with python docx and it requires hex values to format font color for example

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

However I need to store the arguement for RGBColor in a variable, a dictionary to be exact however when you store a hex value in a variable it will format it to an int. example:

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

print(code)

returns: (112, 173, 71)

and storing it using the hex() function will format it to be a str .

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

print(code)

returns: ('0x70', '0xad', '0x47')

and the RGBColor operator will not accept strings, and I cannot re-format these strings back into an int because I get the error ValueError: invalid literal for int() with base 10: '0x70'

In summery how can I store a hex value such as 0x70, 0xad, 0x47 as an integer that I can then feed into the RGBColor opperator?

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

produces the same result as:

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

The 0x7f format is just an alternate Python literal form for an int value. There is only one kind of int , just multiple ways of expressing the same value as a literal. See the Python docs on numeric literals for a full breakdown of those options: https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals

Note that you can also use:

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

If that is more convenient for you.
https://python-docx.readthedocs.io/en/latest/api/shared.html#docx.shared.RGBColor.from_string

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM