16进制转10进制c语言代码
时间: 2023-10-22 11:09:09 浏览: 208
将16进制数转换为10进制数的C语言代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
char hex[10];
int decimal = 0, i = 0, val, len;
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
len = strlen(hex);
len--;
for(i=0; hex[i]!='\0'; i++) {
if(hex[i]>='0' && hex[i]<='9') {
val = hex[i] - 48;
}
else if(hex[i]>='a' && hex[i]<='f') {
val = hex[i] - 97 + 10;
}
else if(hex[i]>='A' && hex[i]<='F') {
val = hex[i] - 65 + 10;
}
decimal += val * pow(16, len);
len--;
}
printf("Decimal number is: %d", decimal);
return 0;
}
```
相关问题
16进制转10进制C语言代码
以下是C语言实现16进制转10进制的代码:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char hex[17];
long long decimal, place;
int i = 0, val, len;
decimal = 0;
place = 1;
// 读取十六进制数
printf("请输入一个十六进制数:");
fgets(hex, 17, stdin);
// 计算十六进制数的长度
len = strlen(hex);
len = len - 1;
// 将十六进制数转换为十进制数
for(i=0; hex[i]!='\0' && i<len; i++)
{
// 将字符转换为数字
if(hex[i]>='0' && hex[i]<='9')
{
val = hex[i] - 48;
}
else if(hex[i]>='a' && hex[i]<='f')
{
val = hex[i] - 97 + 10;
}
else if(hex[i]>='A' && hex[i]<='F')
{
val = hex[i] - 65 + 10;
}
else
{
continue;
}
decimal += val * pow(16, len-place);
place++;
}
// 输出十进制数
printf("转换为十进制数为:%lld\n", decimal);
return 0;
}
```
16进制转10进制c语言代码,能在单片机里面运行
在C语言中,将十六进制数转换为十进制数可以使用`strtol()`函数,但在单片机环境中,由于资源限制,可能需要手动编写循环处理。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 十六进制字符到对应的整数值
int hex_to_dec(char ch) {
if (ch >= '0' && ch <= '9') return ch - '0';
if (ch >= 'A' && ch <= 'F') return ch - 'A' + 10;
if (ch >= 'a' && ch <= 'f') return ch - 'a' + 10;
return -1; // 非法字符
}
// 将十六进制字符串转换成十进制整数
long long hex_to_decimal(const char *hex_str) {
long long decimal = 0;
int i;
for (i = 0; hex_str[i] != '\0'; i++) {
int digit = hex_to_dec(hex_str[i]);
if (digit == -1) {
printf("Invalid character in the hexadecimal number.\n");
return -1;
}
decimal <<= 4; // 左移四位
decimal += digit; // 加上当前位的值
}
return decimal;
}
int main() {
const char* hex_num = "FF"; // 示例十六进制数
long long dec_num = hex_to_decimal(hex_num);
if (dec_num != -1) {
printf("The decimal equivalent of %s is: %lld\n", hex_num, dec_num);
}
return 0;
}
```
请注意,这个代码适用于有适当字符串处理和整数计算能力的环境,如果是在真正的单片机环境下,你可能需要优化或使用数组、循环和其他更底层的技巧来实现。
阅读全文