プロが教える店舗&オフィスのセキュリティ対策術

VBで10進数を16進数に変えるプログラムを作成しています。("15"とテキストボックスに入力し「変換ボタン」を押すと"F"と表示されるようなやつです)条件が「16進数の最大桁が64桁のもの」を作成するのが条件です。(当たり前ですがオーバーフローします・・。)16進数→10進数に変換するのは何とか出来たのですが、逆ができません。
どなたか知恵をお貸しください。

A 回答 (4件)

16進の求め方は知っていますか?


例えば1000の10進を16に・・・

1000/16 = 62...8
この商をまた16で割る
62/16=3...14(E)

商が16より小さくなるまでやります。
で、商→余り→余り・・・・というわけで
10進の1000の16進は3E8となります。
配列にしてA(1)に最終的な商、A(2)~に余りを入れていけば、A(1)~~~で並べれば16進になります。

わかりにくくてすいません(^_^;)
    • good
    • 0
この回答へのお礼

いえいえとんでもない!
素早いご回答ありがとうございました!
もう少し考えてみますね!
ありがとうございました。

お礼日時:2004/05/29 20:37

10進の数の割り算が問題なくできれば16進への変換を


行うことができます。

ある数を16で割った余りがその数の16進として表記できる
一番下の位となります。位取り記数法の考えから、16で
割ったときの商は先ほど求めた一番下の位を取り除いた数と
なります。

例を挙げると次のようになります。
・12345678901234567890(10進)を16進に変換する
12345678901234567890/16=771604931327160493余り2
771604931327160493/16=48225308207947530余り13
48225308207947530/16=3014081762996720余り10
3014081762996720/16=188380110187295余り0
188380110187295/16=11773756886705余り15
11773756886705/16=735859805419余り1
735859805419/16=45991237838余り11
45991237838/16=2874452364余り14
2874452364/16=179653272余り12
179653272/16=11228329余り8
11228329/16=701770余り9
701770/16=43860余り10
43860/16=2741余り4
2741/16=171余り5
171/16=10余り11
10/16=0余り10
商が0になったので
10,11,5,4,10,9,8,12,14,11,1,15,0,10,13,2を16進数に置き換えて
AB54A98CEB1F0AD2
となります。
    • good
    • 0
この回答へのお礼

詳しいご説明本当にありがとうございました!
もう少し考えてみますね!
本当にありがとうございました!

お礼日時:2004/05/29 20:39

1.言語はVB6.0でしょうか、VB.NETでしょうか。


2.>(当たり前ですがオーバーフローします・・。)
オーバーフローが発生しない程度の数値の範囲内で、
10進数->16進数の変換ができれば良いのですか。
それとも、16進数の0~FFF...FF(64桁)迄の全ての数値に対応した変換が出来ることが条件でしょうか?
3.>16進数→10進数に変換するのは何とか出来たのですが
FF..FF(64桁)の値も(オーバーフロー無しで)10進数に変換することが出来たのでしょうか?
    • good
    • 0
この回答へのお礼

説明不足で申し訳ございません!
1、VB6.0です。
>2、16進数の0~FFF...FF(64桁)迄>の全ての数値に対応した変換が出来ることが条件で>しょうか?
その通りです。
3、はい。配列の繰り上がり処理を活用し何とかできました。64桁でもオーバーフローしません。

もう少し自分なりに考えてみますね!
ありがとうございました。

お礼日時:2004/05/29 20:43

もしただ単純に変換したいということであれば下記の関数がありますね。



10進->16進
strTMP$ = Hex(intTMP$)

16進->10進
intTMP$= Val("&H" & "16進文字列")
    • good
    • 0
この回答へのお礼

なるほどー!
こういう変換方法もあるのですね!
ありがとうございました!

お礼日時:2004/05/29 20:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!