重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

 16進数から10進数への関数を教えてください。

VBでです。

HEXという関数は10から16ですよね。

A 回答 (4件)

こんにちは



CDec(&H2C)
ていう感じでしょうか。(答えは44)
    • good
    • 0

皆さん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
    • good
    • 0
この回答へのお礼

皆様 ご回答ありがとうございました。

お礼日時:2002/09/10 20:33

どれでもどうぞ。


違いはヘルプを参照してください。


a = "&HF"
MsgBox CInt(a)
MsgBox CLng(a)
MsgBox CDbl(a)
    • good
    • 0

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をあまり使わないので絶対の自信はありませんが、こんな感じでよいのではないでしょうか。
    • good
    • 0

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