首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有人晓得这是什么校验方式吗?求解答

2013-01-28 
有人知道这是什么校验方式吗?求解答char cc0,h1,h2for(int k0klenk++)cc^str[k]//str[]数组中存着

有人知道这是什么校验方式吗?求解答
char cc=0,h1,h2;
        for(int k=0;k<len;k++)
        cc^=str[k];//str[]数组中存着数据,要对这些数据进行校验.
h2=cc & 0x0f;
h1=(cc>>4) & 0x0f;

if(h1<10) 
h1+='0';
else 
h1+='A'-10;

if(h2<10) 
h2+='0';
else 
h2+='A'-10;



[解决办法]

引用:
引用:对数组的每个数按位异或请问后面的
h2=cc &amp; 0x0f;
h1=(cc>>4) &amp; 0x0f;

if(h1<10) 
h1+='0';
else 
h1+='A'-10;

if(h2<10) 
h2+='0';
else 
h2+='A'-10;

求的是什么,为什么这样……


程序的意图是想把结果(8位二进制数)用十六进制表示出来,高4位和低4位分别用一位十六制表示(0~9,A~F),
if-else语句则是在数字与字符间进行转换,
Eg: 1 == '1', 10 == 'A' 15 == 'F'
h1是结果的高4位数,h2是低4位数.
eg: 结果cc = 143 == 0x1F, h1 = 0x01 = 1  < 10 ==>> 1 + '0' = '1';
                          h2 = 0x0F = 15 > 10 ==>> 15 + 'A' - 10 = 'F'

热点排行