假设我有两个层,每个层只包含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的帮助下完成吗?
发布于 2014-09-01 18:34:13
如果您希望能够识别层的顺序,则需要以某种方式将该信息存储在relustant类中。
第一种方法:最简单的方法是使用属性,该属性将以列表、数组或其他形式存储此信息。
第二种方法:如果你的relustant构造函数将参数作为整数,而你只有很少的层,比如说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值的图层添加到result (result = 2),现在你需要将number按基数移位(result = 20),然后添加下一层的值,依此类推…由于最大值为255,因此使用bite将是基数为8的位置。层就是它的位置。
result = result<<base*layer | value希望这是可以理解的,它将帮助你解决你的问题。
https://stackoverflow.com/questions/25561555
复制相似问题