0

私は2つの整数a、b、および次のようなループを持っています:

for(int i=0 ;i<8 ;++i)
{
    if((b & (0x01 << i)) != 0x00)  
    {
        // 
        c ^= (a << i);
    }
}

a と b が char 配列に格納されている場合、どうすればこれを行うことができますか?

unsigned char test (unsigned char* a[], unsigned char* b[])
{

    for(int i=0 ;i<8 ;++i)
    {
        if((b[i] & (0x01 << i)) != 0x00)  
        {
            shiftleft(a);
            c[i] ^= a;
        }
    }
}
4

3 に答える 3

0

私は思う - あなたが何をしたいのかを推測するべきです。

unsigned char test (unsigned char* a[], unsigned char* b[])
{
    for(int i=0 ;i<8 ;++i)
    {
        if((b[i] & (0x01 << i)) != 0x00)  
        {
            c[i] ^= (*a)<<i;
        }
    }
}

ただし、残りの「a」配列で何をしたいかによって異なります

于 2012-11-01T18:36:35.500 に答える
0

a と b は配列になっているため、最初に操作する要素のインデックスと逆参照を行う必要があります。したがって、たとえば、代わりに

c ^= (a << i);

あなたがすることができます:

c[i] ^= (a[i] << i);

^= は前の値に依存するため、開始する前に c[i] を意味のあるものに初期化する必要があることに注意してください。

于 2012-11-01T18:37:11.803 に答える