文字列を_int64に変換するためにこの関数を試しましたが、機能しませんでした:
_int64 lKey = _atoi64("a1234");
lKey値は常にゼロであり、文字列が「1234」のような数字のみである場合を除いて機能しません
C ++文字列ストリームを使用してソリューションを読みますが、純粋なCでアプリケーションを作成したいと思います
この関数は実際に機能します。ドキュメントに記載されているように:
各関数は、入力文字を数値として解釈することによって生成された__int64値を返します。入力をそのタイプの値に変換できない場合、_atoi64の戻り値は0です。
したがって、正しい文字列が渡されていることを確認する必要があります。それ以外の場合、戻り値は常にゼロになります。"a1234"
はこの関数の観点からは正しい文字列ではなく、ほとんどすべての「ダンプ」解析関数はそれを解析できません。
番号が16進数であり、C99で問題がない場合は、strtoull()
代わりに次のことを試してください。
const unsigned long long value = strtoull(string, NULL, 16);
または自動検出を使用:
const unsigned long long value = strtoull(string, NULL, 0);