
C语言中,如何将一个64单元的数组分成8个8单元的数组?
有这样一段代码://字节转换成二进制intByteToBit(charch,charbit[8]){intcnt;for(cnt=0;cnt<8;cnt++){*(bit...
有这样一段代码:
//字节转换成二进制
int ByteToBit(char ch, char bit[8]){
int cnt;
for(cnt = 0;cnt < 8; cnt++){
*(bit+cnt) = (ch>>cnt)&1;
}
return 0;
}
//将长度为8的字符串转为二进制位串
int Char8ToBit64(char ch[8],char bit[64]){
int cnt;
for(cnt = 0; cnt < 8; cnt++){
ByteToBit(*(ch+cnt),bit+(cnt<<3));
}
return 0;
}
这里的ByteToBit(*(ch+cnt),bit+(cnt<<3)); ,bit+(cnt<<3)是什么意思?做参数应该传入一个8单元的数组,这里 bit+(cnt<<3是一个8个单元的数组吗?
求解~~ 展开
//字节转换成二进制
int ByteToBit(char ch, char bit[8]){
int cnt;
for(cnt = 0;cnt < 8; cnt++){
*(bit+cnt) = (ch>>cnt)&1;
}
return 0;
}
//将长度为8的字符串转为二进制位串
int Char8ToBit64(char ch[8],char bit[64]){
int cnt;
for(cnt = 0; cnt < 8; cnt++){
ByteToBit(*(ch+cnt),bit+(cnt<<3));
}
return 0;
}
这里的ByteToBit(*(ch+cnt),bit+(cnt<<3)); ,bit+(cnt<<3)是什么意思?做参数应该传入一个8单元的数组,这里 bit+(cnt<<3是一个8个单元的数组吗?
求解~~ 展开
1个回答
展开全部
ByteToBit(*(ch+cnt),bit+(cnt<<3)); //这个是调用函数。*(ch+cnt)作为参数传入的是(ch+cnt)地址下的内容。*(ch+cnt)表示的是一个值。
bit+(cnt<<3)是左移三位,是位运算。
bit+(cnt<<3)是左移三位,是位运算。
追问
*(ch+cnt)这个我知道,就是想问下bit+(cnt<<3)这个做参数传入的是一个地址吧?
追答
是,因为bit就是指数组的地址,那数组基地址加数值表示地址的移动。所以bit+(cnt<<3)表示的是地址。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询