经理出一题:下面的字符串从左到右逐位异或结果为何值?指每次异或的结果再和下
一个字符异或
字符串:G268875N11924S32
比如G和2异或后结果再和6异或,以此类推要求:每次异或的结果都要求是一个字节
提示:转为16进制做才可我知道16进制单个数和单个数异或结果是一个字节,比如9异或3为A,但是
象上面的G,怎么转成十六进制?如果是用它的ASC码来异或,结果可能会是
两个字节,怎么做?

解决方案 »

  1.   

    用它的ASC码来异何,结果怎么会是两字节呢,你算过了吗?
    提示:一个字节的值域范围是0~255
      

  2.   

    //想法:
    //用数组存
    //char bufch[]={'G','2',...};
    //在把每一位转为16进制
    //再^=
      

  3.   

    考虑的太复杂了
    char ret = 'g'^'2'^'6'^'8'^……;
      

  4.   

    一个字节多大?4位?如果是8位,那么G的ASC码为1000111,七位,一个字节。
      

  5.   

    是用ASCII码来异或了,异或的结果只可能是一个字节,不可能是两个字节。
      

  6.   

    同意isdong(有些事情应该忘记) (☆★☆★☆★☆★) ( ) 应该这样就OK了。
      

  7.   

    每一位先转成16进制再异或,比如"G":
       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"这样的值,总之可能会出现两字节的数
      

  8.   

    按你以上的题意,isdong的方法就可以了
    如果你先将它们转换成数字,类型就是整型(4字节)或其它了,所以得出的结果是不对的;
    不转换就运算就是字符型(1字节/8位)运算,运算出来的结果就还是字符(8位)
    'G'、'2'的内码分别是47H,32H;
    47H^32H=75H;它对应的字符应该是'u'。