我有以下多维char数组。我需要首先XOR
使用掩码数组的一个数组,然后AND
结果与另一个数组。实现它的最快方法是什么?
注意:char数组的大小可以达到20 KB。
unsigned char test1[2][2] = { { 'a','b' },{ 0 } };
unsigned char test2[2][2] = { { 0 },{ 'O','S' } };
unsigned char mask[2][2] = { 0 };
答案 0 :(得分:0)
int cnt = sizeof(mask)/sizeof(unsigned char)
while(cnt>0)
{
*((unsigned char*)test1+cnt) ^= *((unsigned char*)mask+cnt);
*((unsigned char*)test1+cnt) &= *((unsigned char*)test2+cnt);
cnt--;
}
只有一次通过数组的方式,你只能移动3个指针,编译器可以很好地优化它们。为了最有效率,我们必须进行一些测试并查看装配输出。 IT还取决于您使用的架构(X86,ARM,AVR,PIC,......)