【发布时间】:2017-09-12 14:26:46
【问题描述】:
我需要将一个可能超出有符号整数范围的数字从字符串转换为整数。如果值超出有符号整数限制,我总是得到数字 0。我了解 0 表示转换失败。
这是我尝试过的:
现在数据将始终低于 int 限制,因此将其存储到 int 中应该不成问题。即使将类型更改为 long 我仍然得到 0。
int getData(char* data){
char *end;
unsigned int x = strtol (data, &end, 7);
return x;
}
我尝试将值放入无符号整数并返回到无符号整数。没关系,我什至没有从中得到正确的转换。
int getData(char* data){
unsigned x = atoi(data);
return x;
}
我也尝试过在另一个堆栈交换线程上找到的这个。这里也没有运气。
int getData(char* data){
int x = strtoul(data, NULL, 10);
return x;
}
我做错了什么?
【问题讨论】:
-
你确定你希望结果是
base 7和strtoul(data, NULL, 7),我认为应该是strtoul(data, NULL, 10) -
不错,但如果我用 10 替换它也没关系。
-
让我们知道您从这段代码中得到了什么以及您的期望
-
如果要将字符串转换为整数,则必须将
strtoulbase 设置为 base 10。你想要这个strtol (data, &end, 7);的base 7 你需要阅读手册页strtoul(3) -
我希望得到一个非 0 的数字。我选择什么基数都没有关系。我总是得到 0。例如,如果数据包含 3147483647,我想在名为 x 的无符号整数中查看该数字。
标签: c int type-conversion