请教高手:关于一个数据新排组合的算法问题
比如 现在有个char型数据0x8e(例),将它的每一位分别保存到另外的8个char类型数据的第0位
1111 111X(1)
1010 101X(0)
1111 111X(0)
1010 101X(0)
1111 111X(1)
1010 101X(1)
1111 111X(1)
1010 101X(0)
这是这8个数据 其中X表示分别来自于0x8e
[解决办法]
大概讲一下算法:
//定义常量const unsigned char C = 0x80;const unsigned char SET1 = 0x01;const unsigned char SET0 = 0xfe;unsigned char src = 0x8e;unsigned char arr[8] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};for (i = 0; i < 8; i++){ // 做按位与运算 if ((src & C) == 0) { // i的最高位为0 a[i] = a[i] & SET0; } else { // i的最高位为1 a[i] = a[i] | SET1; } // src左移一位 src<<1;}