1

Mini Iniを使用して、組み込みシステムの .ini ファイルからデータを読み取ります。long 整数または文字列の読み取りをサポートしています。私が持っているいくつかの数値は長すぎて長さに収まらないため、それらを文字列として読み込んでいます。ただし、それらを 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 に変換する方法を教えていただければ幸いです。

編集:結論

アトール関数は、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 に答える