我有一个深夜脑死问题。它可能很简单,但你知道,在编程8小时+后接近最后期限时会怎样。:)
这是我的问题...
我有一个长度为10的布尔数组,逻辑上分成几个部分来保存4个不同的整数位数组(作为布尔值)。这是目标数组:
bool[] myArray = new bool[10];
以下是我想要插入的4个整数:
int value1 = 3; // 2 bits, myArray[0-1], 11
int value2 = 12; // 4 bits, myArray[2-5], 1100
int value3 = 2; // 2 bits, myArray[6-7], 10
int value4 = 1; // 2 bits, myArray[8-9], 01
myArray应该最终看起来像下面这样(注意第一个元素是位置0):
{(T,T),(T,T,F,F),(T,F),(F,T)}
最终我想要做的是将myArray转换为一个整型值:
0x1111001001 = 969
也许有更好的方法可以在不使用布尔值的情况下完成这个操作?因此,让我用更一般的方式重新表达我的问题:
如何将N个int值“连接”成一个目标int?
谢谢!
value4
(即1
)会贡献 两个 位,即01
。我认为它应该只给出 一个 位?如果每个int
值根据其大小贡献了 0 到 31 个位,编码可能会很有趣。 - Jeppe Stig Nielsen2;4;2;2
。相反,它总是采用最短的可能位长度。因此,它不会像您要求的那样返回固定长度的位模式(10=2+4+2+2
)。 - Jeppe Stig Nielsen