【发布时间】:2014-10-20 13:47:24
【问题描述】:
我正在使用Mini Ini 从嵌入式系统上的 .ini 文件中读取数据。它支持读取长整数或字符串。我拥有的一些数字太大而无法放入很长的时间,所以我将它们作为字符串读取。但是,我需要将它们转换为 uint64_t。
我尝试使用atof 将其转换为浮点数并将其强制转换为 uint64_t,它崩溃并烧毁,大概是因为强制转换改变了程序查看位的方式而不改变位本身。
char string_in[100];
//ret = ini_gets(section,key,"default_value",string_in,100,inifile);
//To simplify, use
string_in = "5100200300";
uint64_t value = (uint64_t)atof(string_in);
对于如何将字符串转换为 uint64 的帮助,我将不胜感激。
编辑:结论
atoll 函数将 ascii 转换为 long long,这可以达到我需要的目的。但是,为了完整起见,我实现了接受的答案中提供的功能,并为我的问题提供了确切的答案。
【问题讨论】:
-
float 对于 uint64_t 来说不够大...(顺便说一句,转换会执行截断,但它适用于这种显式转换)。
-
atoll() 是我所需要的。谢谢,我觉得我很愚蠢,但是谷歌背叛了我,所以......
-
strtoull()提供比atoll更多的错误检查。