VC++ 64bit整数の文字列化・整数化 【チュートリアル】


64bit整数

通常C++などで定義されている整数の最大は、intやlongで32bit(4G)であるが、昨今のファイルシステムの事情などを見てもそれ以上の値を扱いたい場合があるのはよくあることである。

スポンサーリンク

そこで使うのが64bit整数。.net frameworkなどでは最初から規定されているが、VC++にあたっては__int64というのを使う。これは色んなところでtypedefやdefineで利用されていて、例えば、LONGLONGは通常__int64である(86用プロセッサ指定_M_IX86が定義されている時)。また、ファイルポジションを扱うためのfpos_tも__int64で定義されている(Microsoft言語拡張指定の場合)。

64bit整数->文字列

文字列への変換は、printfsprintfCString::Formatなどフォーマットが使える場合

という風に行う(nは__int64)。例えば、このとき64bit整数にもかかわらず

としてしまった場合、単に「1 0」としか出力されない。0はn1の上位32bitを整数として出力した値である。ちなみに、32bitより大きな値をセットする時、

というようにllのサフィックス(接尾辞)をつけてもよい。(Visual Studio 2005では、llをつけなくても大丈夫であった)

また、_i64toaなどを使っても出来る。MSDNを参照して

その結果を (_itoa の場合は 33 文字まで、_i64toa および _ui64toa の場合は 65 文字まで) str に格納します。

とのことで、65文字分のバッファを取っておくことが必要のようだ。_i64totなどではテンプレートでバッファサイズも渡されるので安心して使える。10進数文字列に変換する場合、、、

文字列->64bit整数

こちらの方はわりと簡単で、_ttoi64_tstoi64などを使うだけでよい。

なお、_ttoi64や_tstoi64はUNICODEかどうかによって_atoi64、_wtoi64あたりに展開される。

スポンサーリンク
カテゴリー: チュートリアル   パーマリンク

コメントは受け付けていません。