c语言字符串二进制转换10进制
时间: 2023-12-09 16:35:40 浏览: 95
以下是C语言中将二进制字符串转换为十进制的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int binaryToDecimal(char *binary) {
int decimal = 0;
int length = strlen(binary);
for (int i = 0; i < length; i++) {
if (binary[i] == '1') {
decimal += pow(2, length - 1 - i);
}
}
return decimal;
}
int main() {
char binary[] = "1101";
int decimal = binaryToDecimal(binary);
printf("%s in binary = %d in decimal\n", binary, decimal);
return 0;
}
```
该示例代码中,`binaryToDecimal`函数将二进制字符串转换为十进制数,`main`函数中调用该函数并输出结果。
相关问题
C语言字符串十进制转十六进制
以下是两种C语言字符串十进制转十六进制的方法:
方法一:
思路:用一个字符串数组存储0-F一共16个十六进制数。十进制数除16取余,余数对应字符串数组下标,用一个整型数组存储余数对应的字符串数组下标里的十六进制数。最后逆序输出整型数组里的元素。
```c
#include <stdio.h>
int main() {
char a[40]="0123456789ABCDEF";//用一个数组存储十六进制数
char b[100];//储存输入的十进制数对应的十六进制数
int n;
int cnt;//计数
scanf("%d",&n);//输入要转换的十进制数
if(n==0) printf("0");
while(n!=0) {
b[++cnt]=a[n%16];//这里cnt从1开始
n=n/16;
}
for(int i=cnt;i>0;i--)/*上面cnt从1开始所以i>0,不用输出b[0]。逆序输出*/
printf("%c",b[i]);
return 0;
}
```
方法二:
思路:先使用`strtol`函数将字符串转成十进制数,再通过`sprintf`函数将十进制数按十六进制字符串形式输出到字符数组保存。
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
char str1[] = "87632394";
char str2[100] = {0};
char* endptr;
long data = 0;
data = strtol(str1,&endptr,10);
printf("data=%ld\r\n",data);
sprintf(str2,"%X",data);
printf("str2=%s\r\n",str2);
return 0;
}
```
c语言二进制转换10进制字符串
以下是c语言将二进制转换为十进制的方法:
```c
#include <stdio.h>
#include <math.h>
int binaryToDecimal(int n) {
int decimal = 0, i = 0, remainder;
while (n != 0) {
remainder = n % 10;
n /= 10;
decimal += remainder * pow(2, i);
++i;
}
return decimal;
}
int main() {
int binary;
printf("请输入一个二进制数:");
scanf("%d", &binary);
printf("转换为十进制数为:%d", binaryToDecimal(binary));
return 0;
}
```
该程序首先定义了一个函数`binaryToDecimal`,用于将二进制数转换为十进制数。然后在`main`函数中,通过`scanf`函数获取用户输入的二进制数,并调用`binaryToDecimal`函数将其转换为十进制数并输出。
阅读全文