以这种奇怪的方式序列化/转置数据的最有效(最快)方法是什么。 我们假设我有8个数组,其中包含一些数据。
char Array0[10];
char Array1[10];
.............
char Array7[10];
I need to get an output array that will have:
Output[80];
Output.byte0.bit0 = Array0.byte0.bit0
Output.byte0.bit1 = Array1.byte0.bit0
Output.byte0.bit2 = Array2.byte0.bit0
Output.byte0.bit3 = Array3.byte0.bit0
.....................................
Output.byte0.bit7 = Array7.byte0.bit0
Output.byte1.bit0 = Array0.byte0.bit1
Output.byte1.bit1 = Array1.byte0.bit1
Output.byte1.bit2 = Array2.byte0.bit1
Output.byte1.bit3 = Array3.byte0.bit1
.....................................
Output.byte1.bit7 = Array7.byte0.bit1
输出数组的Bit0基本上包含输入Array0的序列化数据。 输出Array的Bit1包含输入Array1的序列化数据 等...
我使用的是微芯片PIC32器件,但这不应该太重要,它仍然是标准的C
答案 0 :(得分:0)
我不明白为什么你需要做这样的事情,但你可以使用移位运算符来做。
您需要为这些阵列创建一个矩阵:
char Array[N][M]
这样做:
int i=0;
for ( int e = 0 ; e < M ; e++ ) //~ e for element number
for (int m = 0 ; m < 8 ; m++ ) //~ m for mask
{
char aux=0;
for (int a = 0 ; a < N ; a++ ) //~ a for array
{
char temp = Array[a][e] & (0x01 << m );
temp >>= m;
temp <<= a;
aux |= temp;
}
output[i++]= aux;
}
N应为8和8。