关于任意进制转化成10进制再转化成其他进制
程序员文章站
2024-03-15 13:01:41
...
for (i = 0; i < len; i++) {
r = pow(a, len - i - 1);
k = r;
if (num[i] >= 'A' && num[i] <= 'F')
sum += (num[i] - 55) * r;
else
sum += (num[i] - '0') * r;
}
a表示其原先的进制
用字符串读进来,用len求长度
转化成int后用sum求和
while (sum > 0) {
B[i++] = sum % b;
sum = sum / b;
}
count = i;
for (j = count - 1; j >= 0; j--) {
if (B[j] >= 10) {
x = B[j] + 55;
printf("%c", x);
} else {
printf("%d", B[j]);
}
}
用int B数组来先储存 再倒叙输出 输出的时候转化成int型或者char型
关于将数直接用16进制读进来 并 转化成长整型
char fir[10];
long int li1;
li1 = strtol (fir,NULL,16);
其中的16也可以改成任何数值 第二个参数原本是一个指针指向了第一个不能被转换的位置 因为在这里 这个指针无作用 所以可以直接改成NULL