20桁の10進数字を16進表示するには?

[戻る]
とも 2002/06/19(水) 17:20:52
こんにちは。
早速質問させていただきます。

20桁の10進数字を16進表示する方法を教えて下さい。
long型にしても範囲を超えてしまうのでどうしたらいいかなと
悩んでいます。

よろしくお願いします。

sugar 2002/06/19(水) 17:37:51
20桁の10進数字は、テキストで保持してるのでしょうか。
桁が大きすぎるので、情報処理試験の問題に出てくるような進数変換の公式にのっとって、
自前で変換することになるような気が。

yas0302 [E-Mail] 2002/06/19(水) 23:48:39
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); 

こんな、かんじです。

とも 2002/06/20(木) 09:02:20
sugarさん、yas0302さんご回答ありがとうございました。

yas0302さんの教えていただいた方法でやってみます。
文字列に入ってる10桁数字を変換しないといけないのですが、
そこは考えてやってみます。

もしこれで簡単にできるよという方法がありましたら
またご教授お願いします。

みみみ 2002/06/20(木) 20:39:58
64bit型の場合、printfとscanfのサイズ指定子は10進数の場合 "%I64u"or"%I64d" と
いうように記述します。

yas0302 2002/06/20(木) 21:04:37

> 文字列に入ってる10桁数字を変換しないといけないのですが、
      :
      :

ですが、_atoi64() という関数がありますねー。
"文字列に入ってる10桁数字" なら使えますよ。

古いスレッドには追加発言できません。