我用unsigned char定义了一个变量,然后给他赋值为16进制数,现在想把这个变量转化为10进制,仍然是unsigned char类型的,请问各位大佬应该怎么做呀? unsigned char s=0x1c;//这种类型的转化为10进制
用 %x就可以转换。
#include <stdio.h>
#include <stdlib.h>
int length(char a[]); //因为函数位于main()函数之后,所以当引用这个函数时应该首先进行声明便于之后的引用
int main(void)
{
char a[] = { 'a', 'b', 'c', 'd', 'f' };
int i;
int j = 1515870810;
printf("%x\n", j); //输出结果为: 2f
printf("%X\n", j); //输出结果为: 2F
printf("%#x\n", j); //输出结果为: 0x2f
printf("%#X\n", j); //输出结果为: 0X2F %#X推荐使用
for (i = 0; i < length(a); i++)
{
printf("%d\n", a[i]);
}
return 0;
}
int length(char a[])
{
int value;
value = sizeof(a) / sizeof(a[0]);
return value;
}
#include <stdio.h>
#include <string.h>
/* 十六进制数转换为十进制数 */
long hexToDec(char *source);
/* 返回ch字符在sign数组中的序号 */
int getIndexOfSigns(char ch);
int main()
{
char *hex = "75BCD15";
printf("16进制数:\t%s\n", hex);
printf("10进制数:\t%ld\n", hexToDec(hex));
return 0;
}
/* 十六进制数转换为十进制数 */
long hexToDec(char *source)
{
long sum = 0;
long t = 1;
int i, len;
len = strlen(source);
for(i=len-1; i>=0; i--)
{
sum += t * getIndexOfSigns(*(source + i)); //从低位开始,getIndexOfSigns函数返回其中一位字符对应的十进制数
t *= 16;
}
return sum;
}
/* 返回ch字符在sign数组中的序号 */
int getIndexOfSigns(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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632