int setbit(char * buf,int bitno)把指定的缓冲区的某位设置为1.int resetbit(char * buf,int bitno)把指定的缓冲区的某位设置为0.谁有什么好的思路吗?谢谢大家

解决方案 »

  1.   

    我在做的时候强制转换总是碰到问题,而且感觉思路也不是很好,下面是代码:int UZSETBIT(char *buf,int bitno)
    {
        int cmsk;    if(bitno <= 0){
            return(-1);
        }    cmsk = 1;
        if(bitno > 1){
            cmsk = cmsk << (bitno - 1);
        }    (*buf) = (*buf) | cmsk;    return(0);
    }
      

  2.   

    bool SetBit(char *buf, int bitno)
    {
        char nMask = 1;    if(bitno <= 0 || bitno > 8 * strlen(buf))
            return false;    nMask <<= 8 - bitno % 8;    *(buf + bitno / 8) |= nMask;
     
        return true;
    }在这直接写的,没有运行过,你先试试吧
      

  3.   

    现在的问题是参数是char *类型,而我想传int类型的时候strlen(buf)就会出错.求出的不是正确的值,有什么办法没?