【发布时间】:2011-12-03 14:25:57
【问题描述】:
我已经使用函数atoi 将字符串转换为int 并且它工作正常但是当我给了
num = atoi (argv[1]) ;
// argv contain 4294967295 maximun value of 32 bit integer
它给了我 2147483647 的答案,基本上是 4294967295 的一半
我猜这是因为char 和int 中的字节不同。
任何人都可以解释位和字节发生了什么
以及如何修复它或将其转换为 int
【问题讨论】:
-
2147483647 是有符号整数的最大值(从 -2147483648 到 2147483647)。在那里用作返回值。您的值是 unsigned int 的最大值(范围从 0 到 4294967295)。
-
除了下面建议的 sscanf 之外,您还可以使用
long代替int然后使用strtol()或strtoul()。 -
您想将 a char 转换为 int(即表示
int中特定char的值)或所以您的意思是将 string 的一部分解释为表示十进制值?您的问题标题更接近前者,但您的示例代码正在执行后者。 -
@dmckee 先生,我想将字符串转换为 int 我的字符串基本上是作为命令行参数给出的