- ベストアンサー
16進数から10進数へ
16進数から10進数への関数を教えてください。 VBでです。 HEXという関数は10から16ですよね。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは CDec(&H2C) ていう感じでしょうか。(答えは44)
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
皆さん1バイト(16進2桁)を前提にしておられるようだが 実は問題になるのは通常は、多桁のものであるはず。 少数データでしかテストしていないが下記を私家製の関数化して使ってください。 Sub test01() tbl = "0123456789abcdef" ' s = "3ffc01" ' s = "fc" ' s = "c1fc" s=InputBox("16進表現数=") n = 0 j = 0 For i = Len(s) To 1 Step -1 a = Mid(s, i, 1) p = InStr(tbl, a) ' MsgBox "p=" & p If p = 0 Then MsgBox "Error" End If n = n + (p - 1) * 16 ^ j j = j + 1 Next i MsgBox n End Sub
- taka_tetsu
- ベストアンサー率65% (1020/1553)
どれでもどうぞ。 違いはヘルプを参照してください。 a = "&HF" MsgBox CInt(a) MsgBox CLng(a) MsgBox CDbl(a)
- SHJYOR
- ベストアンサー率35% (7/20)
HEX関数は、10進から16進の変換ではなく、数値を16進文字列に変換する関数です。例えば... Hex( 44 ) → "2C" Hex( 256 ) → "100" Hex( &H2C ) → "2C" と、なります。これら16進文字列を数値に戻そうとするなら、Val( "&H" + str ) や CDec( "&H" + str ) で良いと思います(strは16進文字列)。 ですから、例えば、テキストボックスText1に入力した16進文字列を10進文字列に変換してテキストボックスText2にセットしたいとすれば、 Text2.Text = CStr( CDec( "&H" + Text1.Text ) ) とすれば変換できると思います(ただしText1に正しい16進文字列がセットされていなければエラーが出ると思いますが...)。 私は普段VBをあまり使わないので絶対の自信はありませんが、こんな感じでよいのではないでしょうか。
お礼
皆様 ご回答ありがとうございました。