经理出一题:下面的字符串从左到右逐位异或结果为何值?指每次异或的结果再和下
一个字符异或
字符串:G268875N11924S32
比如G和2异或后结果再和6异或,以此类推要求:每次异或的结果都要求是一个字节
提示:转为16进制做才可我知道16进制单个数和单个数异或结果是一个字节,比如9异或3为A,但是
象上面的G,怎么转成十六进制?如果是用它的ASC码来异或,结果可能会是
两个字节,怎么做?
一个字符异或
字符串:G268875N11924S32
比如G和2异或后结果再和6异或,以此类推要求:每次异或的结果都要求是一个字节
提示:转为16进制做才可我知道16进制单个数和单个数异或结果是一个字节,比如9异或3为A,但是
象上面的G,怎么转成十六进制?如果是用它的ASC码来异或,结果可能会是
两个字节,怎么做?
提示:一个字节的值域范围是0~255
//用数组存
//char bufch[]={'G','2',...};
//在把每一位转为16进制
//再^=
char ret = 'g'^'2'^'6'^'8'^……;
char abc,result;
char *Hex = new char;
abc='G';
wsprintf( Hex, "%X", abc );
// 结果为47
再比如"2":
abc ='2'
wsprintf( Hex, "%X", abc );
// 结果为32
result= 47^32;
result的结果一个方块的符号
用别的值有时会得到"23"这样的值,总之可能会出现两字节的数
如果你先将它们转换成数字,类型就是整型(4字节)或其它了,所以得出的结果是不对的;
不转换就运算就是字符型(1字节/8位)运算,运算出来的结果就还是字符(8位)
'G'、'2'的内码分别是47H,32H;
47H^32H=75H;它对应的字符应该是'u'。