在python中将十六进制转换为15位RGB值

在python中将十六进制转换为15位RGB值,python,rgb,bit-shift,Python,Rgb,Bit Shift,我是python的初学者,想制作一个程序,将十六进制RGB值转换为每种颜色的15位RGB 1 5位。我听说可以通过位移位来实现,但我不知道如何在互联网上也找不到任何有用的东西。有人能帮我吗,想象一下这样的问题: 例如,如果您有颜色7FD87F的六字符十六进制表示,它由RGB组件R:7F、G:D8、B:7F组成 两个十六进制数字可以对256个不同的状态16^2=256进行编码,因此每个分量的大小为8位256=2^8 您希望将值转换为颜色空间,其中每个组件以5位表示。实现这一点的方法是从每个组件中丢

我是python的初学者,想制作一个程序,将十六进制RGB值转换为每种颜色的15位RGB 1 5位。我听说可以通过位移位来实现,但我不知道如何在互联网上也找不到任何有用的东西。有人能帮我吗,想象一下这样的问题:

例如,如果您有颜色7FD87F的六字符十六进制表示,它由RGB组件R:7F、G:D8、B:7F组成

两个十六进制数字可以对256个不同的状态16^2=256进行编码,因此每个分量的大小为8位256=2^8

您希望将值转换为颜色空间,其中每个组件以5位表示。实现这一点的方法是从每个组件中丢弃三个最低有效位。例如:

0b10101010 => 0b10101
正如您正确提到的,您可以通过位移位来实现这一点。然后需要重新组合组件。作为提示,以下是我如何将原始的8位组件重新组合为单个24位表示:

(R << 16) + (G << 8) + (B << 0) 
# or just B since a shift by zero is equivalent to
# multiplying by 2^0 is
# multiplying by 1 is
# the multiplicative identity
假设以十六进制字符串而不是整数开始,那么算法的草图如下:

将十六进制字符串拆分为各个颜色组件 将字符串表示形式转换为数字表示形式 对组件进行位移位 将5位组件重新组合为15位表示
此外,第1步和第2步可以与一些位掩蔽和更多的位移位互换。

这不是一个足够具体的问题。您的输入格式是什么样的数据,您希望outputHi@LordMZTE提供什么样的格式。我在一家LED照明公司工作,我们喜欢使用颜色科学Python库来处理这样的事情。