假设我有2层,每层只包含1位(为简单起见)
Layer0 bit = 1 (I'll color this red (255, 0, 0))
Layer1 bit = 0 (I'll color this green (0, 255, 0))
现在,我想在这两个图层中添加颜色并丢弃两个图层。
Resultant Layer = (255, 255, 0)
我知道这个图层包含一个1和一个0.但我怎么知道它的顺序是什么,即0 1
或1 0
(原来它是1 0
,但在此期间解密时,可以将其识别为0 1
)
任何人都可以帮我这个吗?
编辑:这可以在CDMA的帮助下完成吗?
答案 0 :(得分:1)
如果您希望能够识别图层的顺序,则需要以某种方式将该信息存储在relustant
类中。
第一种方法: 最简单的方法是使用class属性将这些信息以列表,数组或其他形式存储。
第二种方法:
如果你的relustant
构造函数将params作为整数并且你只有少量的图层可以说5你可以像这样编码这些信息(如果你有更多的图层,你可以使用十进制表示法254.0 +图层位置,当绘制颜色时被四舍五入):
颜色将是250而不是255,您将为此颜色添加图层编号,因此在您的示例中,最终图层将为(250,251,0),您需要更多图层来实现解码后更复杂的逻辑。
第三种方法: 在现实生活中,你想添加不同的颜色(其他值,然后255和0),然后它更复杂,但这是一些基本的外观。
你有0到255之间的值加起来并且永远不会超过255因此你将使用咬合移动,你将根据图层顺序移动每个值。为了证明这一点,我将使用0到9之间的值。例如
L0 = 2
L1 = 0
L2 = 3
结果应该是203并且将表示5(简单地添加所有基本值2 + 0 + 3)但是从数字203开始,您能够解码层的顺序。因为首先你要将值为2的图层添加到结果(结果= 2),现在你需要按基数移动数字(结果= 20)现在增加下一层的值等等...使用咬合移动它将是基数将因为最大值为255而为8。图层是它的位置。
result = result<<base*layer | value
希望这是可以理解的,它会帮助你解决问题。