如题,比我我有2个16进制串
第一个:D1A1
第二个:12B1怎么求这两个的异或异或出来的结果再通第二个16进制串异或是不是得到第一个16进制串其实主要是弄个简单的加密,自己有点晕请教下大家

解决方案 »

  1.   

    (1)可以把串按2个一组的方式拆成一个byte【】数组,两个数组分别XOR,然后可以重新组成字符串。
    (2)应该是的。不过要两个串字符相同(都是2的倍数)
      

  2.   


                string str1 = "D1A1";
                string str2 = "12B1";
                string result = (Convert.ToInt32(str1, 16) ^ Convert.ToInt32(str2, 16)).ToString("X2");
                Console.WriteLine(result);
      

  3.   

    楼上的范围会溢出,稍许改一下 :)    string str1 = "D1A1D232De34E411";
        string str2 = "12B1ABCDDBCD1211";
        string result = (Convert.ToInt64(str1, 16) ^ Convert.ToInt64(str2, 16)).ToString("X2");
        Console.WriteLine(result);
      

  4.   

    楼上的,XOR是按位操作,不会溢出的。
      

  5.   

    D1A1  xor 12B1 = c310;
    计算方法:
    d1a1的二进制表示:1101000110100001
    12b1的二进制表示:0001001010110001
    异或:每位相同为0,相异为1。
    结果:            
                      1100001100010000
    异或出来的结果再异或第二个16进制串12b1得到第一个16进制串d1a1
    c310  xor 12b1 = d1a1;
      

  6.   


    ToInt32 会溢出!请试一下在说!