【发布时间】:2012-02-20 11:23:12
【问题描述】:
我在这里尝试将 4 位 hexa 转换为 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 之外的任何内容。
【问题讨论】:
-
我尝试使用建议的代码“unwind”,效果很好。谢谢你,放松,还有所有进来帮助我的人!
-
FYI cplusplus.com - 这个网站有很多例子,可以帮助你理解 c/c++ 的美妙之处......
-
感谢您的推荐。我一定会深入研究的。 :D
标签: c hex unsigned-integer