【发布时间】:2017-03-24 21:03:15
【问题描述】:
代码:
char temp[] = "1010000001010011";
printf("%s\n", temp);
unsigned long num = atoi(temp);
printf("%lu\n", num);
输出:
1010000001010011
4081617243
为什么 num 不是 41043?
【问题讨论】:
-
atoi用于十进制数而不是二进制数。使用strtol表示二进制。 -
为什么会这样?
-
atoi()将其输入解释为 十进制 数字的字符串表示形式。如果您想转换以不同基数表示的数字(例如基数 2),请使用strtol()。 -
另请注意,当解释为十进制数时,您的输入字符串很可能会超过系统的最大可表示
long值。 -
"为什么 num 不是 41043?"什么是 41043,它与什么有什么关系?
标签: c long-integer unsigned number-systems