word编程中(win32com)RBG和int32的互相转换

100 阅读1分钟

最近在写win32com的系列教程(win32com是python操作word的一哥),在Font接口中,有两个接口可以对字体设置颜色(当然,接口中都有预设的颜色int32,但太有限了,无法避免需要自定义颜色):

接口性质值类型
Range.Font.Color属性int32
Range.Font.TextColor.RGB属性int32
Range.Font.ColorIndex属性int32(预设值)

Range.Font.ColorIndex使用的是预设值,-1至16的int,第一个和第二个属性只接受int32,而且是rgb颜色码转成int32才能生效,直接传rgb如(255,0,0)会出错的,因为它们只接受int32,没办法了,只能想办法将rgb转换成int32

以下是python语言下,rgbint32的实现:

# rgb转int32
# rgb颜色码为155,229,25
                   # b        # g        # r     
print((0xff << 24)|(25 << 16)|(229 << 8)|155)
>>>
4279887259 # 将这个int赋值给第一或第二个接口就能实现自定义颜色的设置了

# int32转rgb

print((4279887259 & 0xff0000) >> 16 ) # b
print((4279887259 & 0xff00) >> 8) # g
print(4279887259 & 0xff) # r
>>>
25
229
155