11111 111111 11111 > 16 bit
R G B
如何获得R / G / B值?
R = x/2048 (2048 are the 6+5 G+B 11 bit)
G = x-R*2048/32 (32 are the B )
有一个简单的解释吗?为什么十进制值应该被其他位除以得到单组值?
答案 0 :(得分:0)
如果你想获得R,你必须在右边移动11位,这样G和B就会消失。所以
R=x>>11
但是1位的每个移位相当于除以2,所以上面的表达式相当于
R=X/(2^11)=x/2048
所以你得到了R。
要获得G,根据公式,您可以先删除R,这是您之前获得的R但是向后移回11位(或乘以2048)。现在这样做你有一个像:
111111 11111
你向左移5位(或除以32)你就得到了结果。
请注意,在练习中,您可以更轻松地执行此操作:
B=(x and 0x1F)
G=((x>>5) and 0x3F)
R=((x>>11) and 0x1F)