gpt4 book ai didi

c - C中的某些字节异或

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:42 25 4
gpt4 key购买 nike

我想知道是否有人可以帮助我。我是 c 的新手,只是在学习。所以这个问题可能看起来很困惑。我有一个 unsigned int 值,我需要将其拆分为字节,然后将某些字节异或在一起,然后得到结果。我想将值表示为 (0, a0 ⊕ a1,a2 ⊕a3,0)。

十进制值 = 62910759 或十六进制值 = 3BFF127;

unsigned int value = 62910759;

//W = (0, a0 ⊕ a1,a2 ⊕a3,0);

unsigned int L = 0x04000000L^ W ;

最佳答案

我不知道这是否对你有帮助,但我先计算字节,然后对其中一些字节进行异或:

unsigned int value = 62910759;
unsigned char a = value >> 24 & 0xFF; // First byte/ high byte
unsigned char b = value >> 16 & 0xFF;
unsigned char c = value >> 8 & 0xFF;
unsigned char d = value & 0xFF; // Last byte/ smallest byte
printf("%.2X %.2X %.2X %.2X\n", a,b,c,d);

unsigned char aXORb = a^b; // a XOR b
unsigned char bXORc = b^c;
unsigned char cXORd = c^d;
unsigned char dXORa = d^a;

printf("%.2X %.2X %.2X %.2X\n", aXORb,bXORc,cXORd,dXORa);

Try it here.

输出:

03 BF F1 27
BC 4E D6 24

注意:我认为 uint8_t 会更“像 C”,但无论如何结果都是一样的。

@Jimbo Jones 这是最后一步。零是不必要的,但我包含它们是为了更好地理解代码。

unsigned int result = (0x00 << 24) + (aXORb << 16) + (cXORd << 8) + 0x00;
Method(0x02000000L^ result);

如果你的意思是 W = (0, a0 ⊕ a1,a2 ⊕a3,0) 前 8 位是 0,接下来的 8 位是 a XOR b 等等。

关于c - C中的某些字节异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com