我是一个使用python的初学者,想制作一个将十六进制RGB值转换为15位RGB值(每种颜色5位)的程序,我听说可以通过移位来完成,但是我不知道如何在互联网上也找不到任何有用的东西,有人可以帮我吗
答案 0 :(得分:0)
如果您手动执行此操作(例如,用于家庭作业),请考虑以下问题:
如果您有六种颜色的十六进制表示形式(例如"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
因此,假设您是以十六进制字符串而不是整数开头,那么算法的概图:
另外,第1步和第2步可以互换,但有一些位屏蔽和更多的位移。