C语言二进制字符转换为十进制整数
时间: 2024-10-02 20:04:09 浏览: 51
在C语言中,将二进制字符串(通常是前缀为"0b"或"0B"表示其为二进制)转换为十进制整数可以使用`strtol`函数。这是一个标准库函数,它可以从字符串开始解析数字,并将其转换为长整型值。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
long int binary_to_decimal(const char *binary_str) {
long int decimal = strtol(binary_str, NULL, 2); // 第三个参数指定基数为2(二进制)
if (decimal == LONG_MIN || decimal == LONG_MAX && errno == ERANGE) {
printf("Invalid binary number\n");
}
return decimal;
}
int main() {
char binary[] = "0b1010";
long int dec_value = binary_to_decimal(binary);
if (dec_value >= 0) {
printf("The decimal equivalent is: %ld\n", dec_value);
} else {
printf("Negative value: %ld\n", dec_value);
}
return 0;
}
```
在这个示例中,`strtol`会返回对应的十进制整数值,如果输入的二进制字符串无效(例如含有非数字字符),则会返回错误值并设置`errno`标志。
阅读全文