1

我正在使用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,这可以达到我需要的目的。但是,为了完整起见,我实现了接受答案中提供的功能,并为我的问题提供了确切答案。

4

2 回答 2

4

您可以编写自己的转换函数:

uint64_t convert(const char *text)
{
    uint64_t number=0;

    for(; *text; text++)
    {
        char digit=*text-'0';           
        number=(number*10)+digit;
    }

    return number;
}
于 2014-10-20T13:53:13.940 回答
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);
于 2014-10-20T14:58:37.793 回答