[英]Convert hex scanned (scanf) from an unsigned int array into decimal
我在这里尝试将4位数的六进制转换为dec,但是没有成功。 这是我的代码。
unsigned int array[4];
printf("Type in 4-digit hexa: \n");
scanf("%x", &array);
while(getchar() != '\n');
printf("Your number in dec is %u \n", array);
我不知道这是怎么回事,但它不会给出正确的dec输出。 就像我放入EEFF一样,它应该给出61183,但是程序仍继续打印65518。
这个电话是哪来的 我的代码有什么问题? 根据我的考虑,我使用了unsigned int,即FFFF等于65385,unsigned int的范围是0到65535。数据范围应该没有问题,我也使用%u。
经过一些搜索之后,我现在唯一想到的就是这个问题可能与unsigned int到int或sth的大小有关。 我读了说明,但不太明白。
我知道,这可能是重复的,但是我在这里要求更简单地解释为什么它不起作用。 老实说,无论是对于本网站还是编程我都是绝对的新手,因此请轻松编写代码。 仅供参考,除了stdio.h之外,我什么都不知道。
您正在将指针array
传递给printf()
。 这里不需要数组,您要扫描和打印的是一个数字。
unsigned int number;
printf("Type in 4-digit hex:\n");
if (scanf("%x", &number) == 1)
printf("Your number in dec is %u \n", number);
还要注意,通过检查返回值来检查scanf()
成功是一个好主意。
您不需要为此的数组:
unsigned int val;
printf("Type in 4-digit hexa: \n");
scanf("%x", &val);
printf("Your number in dec is %u \n", val);
一种。 打印array[0]
,而不是array
。
(可选)b。 扫描到array
而不是&array
。
C。 getchar()
什么意义?
不,您必须输入字符串作为字符点。 之后,您将转换为数字。 防爆
char *str=char[10];
int i=0,num=0;
printf("Type in 4-digit hexa: ");
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0' && str[i]<='9') num=16*num+str[i]-'0';
else if(str[i]>='a' && str[i]<='f') num=16*num+str[i]-'a';
else if(str[i]>='A' && str[i]<='F') num=16*num+str[i]-'A';
printf("Dec is %d",num);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.