好吧,我尝试用一个简单的例子来解释
#include <stdio.h>
/* Just for print in binary mode */
char *chartobin(unsigned char c)
{
static char a[9];
int i;
for (i = 0; i < 8; i++)
a[7 - i] = (c & (1 << i)) == (1 << i) ? '1' : '0';
a[8] = '\0';
return a;
}
int main(void)
{
unsigned char u = 0xf;
printf("%s\n", chartobin(u));
u >>= 2; // Shift bits 2 positions (to the right)
printf("%s\n", chartobin(u));
printf("%s\n", chartobin(u & 0x1)); // Check if the last bit is on
return 0;
}
输出:
00001111
00000011
00000001
难道我更换#define AR5K_EEPROM_FF_DIS(_v) 1
上述行?
Nooooo !!
如果你的0xb
代替0xf
初始化u
你:
00001011
00000010
00000000
正如你可以看到(((_v) >> 2) & 0x1 != 1
它不是一个正则表达式,它是一个位移 –
你是对的,这是一个速度错误。 虽然我仍然有困惑。 – adkalkan
我并不是故意粗鲁,但对于刚刚开始学习C的人来说,这似乎是一项相当大胆的任务。从C书开始,通过练习可能会更好。如果你不是真的想学C,但是想要用现有的linux模块破解,你可以试试在linux无线邮件列表上提问。我不确定他们会特别容忍初学者的问题,但你可以随时尝试...... – simonc