求:16进制字符,解密后成汉字的算法。
86@86@80@8A@80@85@83@8B@ @分割符,86表示4,80表示1
0BEA@04A2@78A8@66CF@0AA8@78D9@ @分隔符,0BEA貌似是“广”字,04A2貌似是“东”字
78A8可能是 “省”字。以为上述的是广东的身份证号码。
哪位大侠,对16进制,移位,交叉啥的熟悉的,帮我把解密算法弄出来。
谢谢。。。
[解决办法]
0BEA ^ B209 = B9E3 广
04A2 ^ B209 = B6AB 东
78A8 ^ B209 = CAA1 省
[解决办法]
"86@86@80@8A@80@85@83@8B@0BEA@04A2@78A8@66CF@0AA8@78D9@"
"44282719广东省云浮市"
借鉴楼上的回复,上面这串是用GB2312的编码。
const string input = @"86@86@80@8A@80@85@83@8B@0BEA@04A2@78A8@66CF@0AA8@78D9@";var bytes = new List<byte>();foreach (var seg in input.Split('@').Where(s => !string.IsNullOrEmpty(s))){ switch (seg.Length) { case 4: var word = BitConverter.GetBytes((Int16) (Int16.Parse(seg, NumberStyles.HexNumber) ^ 0xB209)); bytes.Add(word[1]); bytes.Add(word[0]); break; case 2: bytes.Add((byte) (byte.Parse(seg, NumberStyles.HexNumber) ^ 0xB2)); break; default: break; }}var text = Encoding.GetEncoding("gb2312").GetString(bytes.ToArray());