将十六进制数转换成十进制数 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0 输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。 十进制数小于2^31(用c语言编写)
时间: 2023-05-26 14:01:15 浏览: 74
我的主人,以下是C语言代码实现:
#include<stdio.h>
#include<string.h>
int hexToInt(char c) { // 将16进制字符转换为10进制整数
if (c >= '0' && c <= '9') return c - '0';
if (c >= 'A' && c <= 'F') return c - 'A' + 10;
return -1; // 非法输入
}
int hexToDec(char* str) { // 将16进制字符串转换为10进制整数
int len = strlen(str);
int result = 0;
for (int i = 0; i < len; i++) {
int digit = hexToInt(str[i]);
if (digit == -1) return -1; // 非法输入
result = result * 16 + digit;
}
return result;
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
char hex[9];
scanf("%s", hex);
int dec = hexToDec(hex);
printf("%d\n", dec);
}
return 0;
}
相关问题
编一函数TranDec,功能是将一个十进制整数m转换成二至十六之间的r进制数字字符串
好的,下面是函数TranDec的代码实现(使用Python语言):
```python
def TranDec(m, r):
# 初始化一个空字符串
result = ""
# 当m大于等于r时,不断进行进制转换
while m >= r:
# 计算m除以r的商和余数
quotient = m // r
remainder = m % r
# 将余数转换成对应的字符
if remainder < 10:
result = str(remainder) + result
else:
result = chr(ord("A") + remainder - 10) + result
# 更新m为商,继续进行转换
m = quotient
# 将最后一个余数转换成对应的字符
if m < 10:
result = str(m) + result
else:
result = chr(ord("A") + m - 10) + result
return result
```
函数接受两个参数,第一个参数m是需要转换的十进制整数,第二个参数r是目标进制(取值范围为2-16)。
函数的实现思路是不断进行进制转换,每次将m除以r得到商和余数,将余数转换成对应的字符,然后更新m为商,继续进行转换,直到m小于r为止。最后将最后一个余数转换成对应的字符并拼接到结果字符串的开头,最终返回结果字符串。
注意,由于结果字符串是从最高位到最低位拼接的,所以每次将余数转换成字符时要拼接在结果字符串的开头。另外,当余数大于等于10时,需要将其转换成对应的字母(A-F),需要使用chr和ord函数进行字符和ASCII码之间的转换。
编一函数TranDec,功能是将一个十进制整数m转换成二二至十六之间的r进制数字字符串
好的,下面是函数TranDec的代码实现(使用Python语言):
```python
def TranDec(m, r):
# 初始化一个空字符串
result = ""
# 当m大于等于r时,不断进行进制转换
while m >= r:
# 计算m除以r的商和余数
quotient = m // r
remainder = m % r
# 将余数转换成对应的字符
if remainder < 10:
result = str(remainder) + result
else:
result = chr(ord("A") + remainder - 10) + result
# 更新m为商,继续进行转换
m = quotient
# 将最后一个余数转换成对应的字符
if m < 10:
result = str(m) + result
else:
result = chr(ord("A") + m - 10) + result
return result
```
函数接受两个参数,第一个参数m是需要转换的十进制整数,第二个参数r是目标进制(取值范围为2-16)。
函数的实现思路是不断进行进制转换,每次将m除以r得到商和余数,将余数转换成对应的字符,然后更新m为商,继续进行转换,直到m小于r为止。最后将最后一个余数转换成对应的字符并拼接到结果字符串的开头,最终返回结果字符串。
注意,由于结果字符串是从最高位到最低位拼接的,所以每次将余数转换成字符时要拼接在结果字符串的开头。另外,当余数大于等于10时,需要将其转换成对应的字母(A-F),需要使用chr和ord函数进行字符和ASCII码之间的转换。