我正在教我自己c与我已购买的一些教科书。一般来说,这很容易,但是我不太容易理解的一个这样的领域涉及位操作。我理解字面(孤立)意义上的操作符的使用,但不是它们如何应用于下面的特定上下文中。c - 解密中的位操作/操作
下面有2个这样的例子,我没有能够掌握他们在一些解密算法中如何/做些什么。
所有即时通讯寻找的是一个解释什么是十六进制和位移/左右将一起做。
我一直在网上查看的大多数例子都是孤立的,至今尚未陷入这种情况如何应用。
如果有任何人都可以推荐的位操作/操作的教科书,我也愿意投资于这些信息。这是我的决心,真的要指出这一点(我讨厌继续前进,没有完全掌握一些东西)。
unsigned long lBits = 0;
lBits = ((unsigned long)(key[28] & 0xFFFF)<< 24)|
((unsigned long)(key[29] & 0xFFFF)<< 16)|
((unsigned long)(key[30] & 0xFFFF)<< 8)|
((unsigned long)(key[31] & 0xFFFF));
...
for(i=0; i < max_length ; i++){
unsigned long tBits = lBits | i;
tkey[28] = (unsigned char) (tBits >> 24);
tkey[29] = (unsigned char) (tBits >> 16);
tkey[30] = (unsigned char) (tBits >> 8);
tkey[31] = (unsigned char) (tBits);
你还没有提供'key'和'tkey'声明。 – owacoder
是的,我期待削减我发布的代码量,因为这个例子很长。 key是通过作为32位密钥的一部分的命令行传入的char数组arg,tkey是用0填充以满足32位长度的相同密钥。 – xxdefaultxx
它是一个'unsigned char'数组,还是'char'? – owacoder