异或算法 如果有三个16位的16进制数,怎么把他们三个用异或算法 合并成一个16位的 16进制数?(有点想绕口令了),各位大虾给一个好点的算法呗,谢谢了!!在线等哦~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 每位一个16进制值,一共16位,就象 "15AAEFE150AA139F"这样,转换成64位的ulong刚好合适。示例代码如下,不知是否要这样的结果:List<string> hexString = new List<string>() { "15AAEFE150AA139F", "46AAE85150A156AE", "593FA31DC0013AF2" };ulong part = Convert.ToUInt64(hexString[0], 16);for (int i = 1; i < hexString.Count; i++) part ^= Convert.ToUInt64(hexString[i], 16);string result = part.ToString("X").PadLeft(16,'0');Console.WriteLine(result);结果:0A3FA4ADC00A7FC3 顺便问一下,十六进制能直接转换成二进制吗?就是Convert 这个方法,或许还有别的? 16位密码和16位16进制值不是一个概念……如果是任意16个字符组成的密码,要把字符转换为byte或者int进行XOR运算,那不能象我那样干。我之前给的都是揣测着你的意思写的。 我觉得你的想法可能是我下面的这种实现: public class Program { static void Main(string[] args) { short a1 = 0x0001; short a2 = 0x0010; short a3 = 0x0100; short result = (short)((a1 ^ a2)|(a2^a3)|(a1^a3); PrintShort(result); } static void PrintShort(short s) { Console.WriteLine("0x" + string.Format("{0:X}", s).PadLeft(4, '0')); } }三个数的异或应该是,三个数同时比较,只有任意两个数的对应位不同,该位结果即为1,只有三个数对应位都相同,该位结果才是0.老毕,你3楼给的方法都不能保证无序性,你那样依次做异或,结果会随着数字的顺序不同而不同,就是同样的三个数顺序变了,结果就变了 弱弱的问一句 你最后的part.ToString("X").PadLeft(16,'0'); 中 ("X")和.PadLeft(16,'0')是用来干嘛的?别喷我啊~~~~~~~~~~~~ 我说的16位进制密码 就是你说那个样子的"AABBBBDD13456789" 这个样子的,还有就是 16进制能直接转换为2进制吗? 还是说16→10→2 这个样子? C#中用Graphic绘制的图片,如何显示图片的鼠标提示 请大家帮忙解决一下,谢谢! 图像算法收集贴 请问网络问题 volatile 在线程同步时 原理是什么? 看书没看懂谢谢 C#。net调试的时候常用的那个窗口是什么来着?被我关掉了,从哪里打开? 如何求出文件夹下*.jg文件的个数 dataGridView 选择当前行? 得到当前行的数据? 请问在那个事件中可以实现?? C#连连看怎么实现连线效果? C#连接ORACLE报错 线程的挂起及重启问题 在WF里面,不同衔接的不同内容在同一个区域的显示
List<string> hexString = new List<string>()
{
"15AAEFE150AA139F",
"46AAE85150A156AE",
"593FA31DC0013AF2"
};ulong part = Convert.ToUInt64(hexString[0], 16);for (int i = 1; i < hexString.Count; i++)
part ^= Convert.ToUInt64(hexString[i], 16);
string result = part.ToString("X").PadLeft(16,'0');Console.WriteLine(result);
结果:
0A3FA4ADC00A7FC3
{
static void Main(string[] args) {
short a1 = 0x0001;
short a2 = 0x0010;
short a3 = 0x0100;
short result = (short)((a1 ^ a2)|(a2^a3)|(a1^a3);
PrintShort(result);
} static void PrintShort(short s) {
Console.WriteLine("0x" + string.Format("{0:X}", s).PadLeft(4, '0'));
}
}三个数的异或应该是,三个数同时比较,只有任意两个数的对应位不同,该位结果即为1,只有三个数对应位都相同,该位结果才是0.老毕,你3楼给的方法都不能保证无序性,你那样依次做异或,结果会随着数字的顺序不同而不同,就是同样的三个数顺序变了,结果就变了
我说的16位进制密码 就是你说那个样子的"AABBBBDD13456789" 这个样子的,还有就是 16进制能直接转换为2进制吗? 还是说16→10→2 这个样子?