使用atoi将char数组转换为int的问题

使用atoi将char数组转换为int的问题

本文介绍了C ++使用atoi将char数组转换为int的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道为什么会这样.

我在WMI中读取我的1TB硬盘驱动器大小,并以[1000202039296]为单位给出了正确的结果.现在,如果我在此char上使用atoi,则可以对其进行其他数学运算并将其转换为MB和GB,但是当我使用atoi时,我会得到[2147483647].

这是我的代码:

Hi I don''t get why this is happening.

Im reading my 1tb hard drive size in WMI and its giving the correct result in bytes of [1000202039296]. Now if i use atoi on this char so i can do other math on it and convert it to MB and GB, but when i use atoi i get [2147483647].

Here''s my code:

char TotalSpace[50];

ReadPropertyString( L"Size", TotalSpace );

printf( "[%s]", TotalSpace );
printf( "[%i]", atoi( TotalSpace ) );



这给了我上面的结果:

[1000202039296]
[2147483647]

谁能解释为什么会发生这种情况,并可能解决此问题?



This gives me the reults as above:

[1000202039296]
[2147483647]

Can anyone explain why this is happening and a possible fix please?

推荐答案


char TotalSpace[50] = "1000202039296";

printf( "[%s]\n", TotalSpace );
printf( "[%llu]\n", _atoi64( TotalSpace ) );


输出:
[1000202039296]
[1000202039296]


Output:
[1000202039296]
[1000202039296]



这篇关于C ++使用atoi将char数组转换为int的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 02:41