こんにちは。
早速質問させていただきます。
20桁の10進数字を16進表示する方法を教えて下さい。
long型にしても範囲を超えてしまうのでどうしたらいいかなと
悩んでいます。
よろしくお願いします。
20桁の10進数字は、テキストで保持してるのでしょうか。
桁が大きすぎるので、情報処理試験の問題に出てくるような進数変換の公式にのっとって、
自前で変換することになるような気が。
VC でしたら、__int64、ULONG64などの型があります。
19桁までなら扱うことができます。
20桁でも、18446744073709551615 までなら可能です。
ULONG64 data;
ULONG hi;
ULONG low;
char buf[20];
data = 18446744073709551615ui64; <==== FFFFFFFFFFFFFFFF の10進数
hi = data >> 32;
low = data;
wsprintf(buf,%08X%08X,hi,low);
こんな、かんじです。
sugarさん、yas0302さんご回答ありがとうございました。
yas0302さんの教えていただいた方法でやってみます。
文字列に入ってる10桁数字を変換しないといけないのですが、
そこは考えてやってみます。
もしこれで簡単にできるよという方法がありましたら
またご教授お願いします。
64bit型の場合、printfとscanfのサイズ指定子は10進数の場合 %I64uor%I64d と
いうように記述します。
> 文字列に入ってる10桁数字を変換しないといけないのですが、
:
:
ですが、_atoi64() という関数がありますねー。
文字列に入ってる10桁数字 なら使えますよ。