写了一个异或的函数

//TruncatedStepRow
template<size_t WIDTH> template<size_t W>
TruncatedStepRow<WIDTH>::TruncatedStepRow(const TruncatedStepRow<W>&amp; a, const TruncatedStepRow<W>&amp; b, size_t len, size_t lenIndices, int lenTrim) :
        StepRow<WIDTH> {a}
{
    cout<<&quot;len=&quot;<<len<<endl;                            //30
    cout<<&quot;lenIndices=&quot;<<lenIndices<<endl;              //1
 //   cout<<&quot;lenTrim=&quot;<<lenTrim<<endl;                    //3
    assert(len+lenIndices <= W);
    assert(len-lenTrim+(2*lenIndices) <= WIDTH);

//    unsigned char  hash[len-lenTrim];
    
    cout<<&quot;colision hash a =&quot;;
    for(long long unsigned int i=0;i<len;i++){
        cout<<a.hash[i];
    }
    cout<<endl;
    cout<<&quot;colision hash b =&quot;;
    for(long long unsigned int i=0;i<len;i++){
        cout<<b.hash[i];
    }
    cout<<endl;

        for (int i = lenTrim; i < (int)len-lenTrim; i++){
        hash[i-lenTrim] = a.hash[i] ^ a.hash[i];
    }

 //    cout<<endl;
    print_hash(len-lenTrim);

    if (a.IndicesBefore(b, len, lenIndices)) {
        std::copy(a.hash+len, a.hash+len+lenIndices, hash+len-lenTrim);
        std::copy(b.hash+len, b.hash+len+lenIndices, hash+len-lenTrim+lenIndices);

    } else {
        std::copy(b.hash+len, b.hash+len+lenIndices, hash+len-lenTrim);
        std::copy(a.hash+len, a.hash+len+lenIndices, hash+len-lenTrim+lenIndices);

    }
    //cout<<endl;
    //cout<<endl;
}

相同的值异或应该是0才对,为什么输出还是4或者7 啊??
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务