Jim*_*nes 1 c cryptography xor
我想知道是否有人可以帮助我。我是c新手,只是学习。所以这个问题可能看起来很混乱。我有一个无符号 int 值,我需要将其拆分为字节,然后将某些字节异或在一起,然后得到结果。我想将值表示为 (0, a0 \xe2\x8a\x95 a1,a2 \xe2\x8a\x95a3,0)。
\n\n十进制值 = 62910759 或十六进制值 = 3BFF127;
\n\nunsigned int value = 62910759;\nRun Code Online (Sandbox Code Playgroud)\n\n// W = (0, a0 \xe2\x8a\x95 a1,a2 \xe2\x8a\x95a3,0);
\n\nunsigned int L = 0x04000000L^ W ;\nRun Code Online (Sandbox Code Playgroud)\n
我不知道这是否对您有帮助,但我首先计算字节,然后对其中一些进行异或:
\n\nunsigned int value = 62910759;\nunsigned char a = value >> 24 & 0xFF; // First byte/ high byte\nunsigned char b = value >> 16 & 0xFF;\nunsigned char c = value >> 8 & 0xFF;\nunsigned char d = value & 0xFF; // Last byte/ smallest byte\nprintf("%.2X %.2X %.2X %.2X\\n", a,b,c,d);\n\nunsigned char aXORb = a^b; // a XOR b\nunsigned char bXORc = b^c;\nunsigned char cXORd = c^d;\nunsigned char dXORa = d^a;\n\nprintf("%.2X %.2X %.2X %.2X\\n", aXORb,bXORc,cXORd,dXORa);\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n输出:
\n\n03 BF F1 27\nBC 4E D6 24\nRun Code Online (Sandbox Code Playgroud)\n\n注意:我认为 uint8_t 会更像“C”,但无论如何结果都是一样的。
\n\n@Jimbo Jones 这是最后一步。零是不必要的,但我将它们包括在内是为了更好地理解代码。
\n\nunsigned int result = (0x00 << 24) + (aXORb << 16) + (cXORd << 8) + 0x00;\nMethod(0x02000000L^ result);\nRun Code Online (Sandbox Code Playgroud)\n\n如果您的意思是 W = (0, a0 \xe2\x8a\x95 a1,a2 \xe2\x8a\x95a3,0) ,则前 8 位为 0,接下来的 8 位为 XOR b,依此类推。
\n