谁能解释一下这段二进制转无符号int的代码?

问题描述 投票:-1回答:1

我不明白for循环怎么会有bits++(我们怎么能递增一个char指针?),这段代码怎么会产生一个int?

int16_t binary_to_int(char *bits) {

    int16_t result;

    for (result = 0; *bits; bits++) {
        if (*bits == '1') 
            result = (result << 1) | 1;
        else if (*bits == '0' ) 
            result <<= 1;
        else 
            break;
    }

    return result;
}
c pointers int
1个回答
2
投票

bits 是一个 char* 指向一个字符串。事实上,它指向的是该字符串的第1个字符,而不是 bits++ 移动指针到字符串的下一个字符。*bits 推迟指针返回当前的字符。char 指向,所以它可以用于检查是否已经到达字符串的0-terminator。

© www.soinside.com 2019 - 2024. All rights reserved.