当前位置: 代码迷 >> C# >> 如何把这样的两组字符串进行异或操作
  详细解决方案

如何把这样的两组字符串进行异或操作

热度:198   发布时间:2016-04-28 08:33:27.0
怎么把这样的两组字符串进行异或操作?
怎么把这样的两组字符串进行异或操作?
1400170155A7BF00F3B45BB976D078B42235FE4A171527DA4B0A07DC43D1827D417B4A10
140018010238E725531BA4535FFDFF0637DE891E5D65A8EB4DC7930F7EE3C764435F2C40
------解决思路----------------------
using System;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var map1 = Enumerable.Range(0, 16).ToDictionary(i => i, i => i.ToString("x").ToUpper()[0]);
            var map2 = map1.ToDictionary(i => i.Value, i => i.Key);

            var str1 = "1400170155A7BF00F3B45BB976D078B42235FE4A171527DA4B0A07DC43D1827D417B4A10";
            var str2 = "140018010238E725531BA4535FFDFF0637DE891E5D65A8EB4DC7930F7EE3C764435F2C40";

            var result = string.Concat(str1.Zip(str2, (c1, c2) => map2[c1] ^ map2[c2]).Select(i => map1[i]));
            Console.WriteLine(result);
        }
    }
}
------解决思路----------------------
var str1 = "1400170155A7BF00F3B45BB976D078B42235FE4A171527DA4B0A07DC43D1827D417B4A10";
var str2 = "140018010238E725531BA4535FFDFF0637DE891E5D65A8EB4DC7930F7EE3C764435F2C40";
var str3 = new string(str1.Zip(str2, (c1, c2) => (Convert.ToUInt32(c1) ^ Convert.ToUInt32(c2)).ToString("X")[0]).ToArray());
  相关解决方案