我使用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,这符合我需要的目的。但是,为了完整起见,我实现了接受的答案中提供的功能,并为我的问题提供了准确的答案。
答案 0 :(得分:3)
您可以编写自己的转换函数:
uint64_t convert(const char *text)
{
uint64_t number=0;
for(; *text; text++)
{
char digit=*text-'0';
number=(number*10)+digit;
}
return number;
}
答案 1 :(得分:0)
#include <stdint.h>
#include <stdlib.h>
#include <assert.h>
static_assert(sizeof(uint64_t) == sizeof(long long),
"Your system is mighty weird");
uint64_t u64 = strtoull(string, NULL, 10);