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

VB6.0
WindowsXP

掲題の件ですが以下のコードを使って16進数を2進数表示にしていますが、最上位ビットに1を立てると値がおかしくなってしまいます。

Private Sub Form_Load()
Dim dat(5) As Variant
Dim i As Variant

dat(0) = Right("0000000000000000" & Hex2Bin(Hex(&HFFFF)), 16)
dat(1) = Right("0000000000000000" & Hex2Bin(Hex(&HFFFE)), 16)
dat(2) = Right("0000000000000000" & Hex2Bin(Hex(&HFF00)), 16)
dat(3) = Right("0000000000000000" & Hex2Bin(Hex(&HF000)), 16)
dat(4) = Right("0000000000000000" & Hex2Bin(Hex(&HF0F0)), 16)
dat(5) = Right("0000000000000000" & Hex2Bin(Hex(&H7FFF)), 16)

For i = 0 To 5
Label1.Caption = Label1.Caption & dat(i) & vbCrLf
Next

Label2.Caption = "FFFF" & vbCrLf & "FFF0" & vbCrLf & "FF00" & vbCrLf & "F000" & vbCrLf & "F0F0"
End Sub
Public Function Hex2Bin(Hex)
Dim Dec
Dec = CInt("&H" + Hex)
Hex2Bin = Dec2Bin(Dec)
End Function

Public Function Bin2Hex(Bin)
Dim Dec
Dec = Bin2Dec(Bin)
Bin2Hex = Hex(Dec)
End Function

Public Function Dec2Bin(ByVal Dec)
Do
Dec2Bin = CStr(Dec Mod 2) & Dec2Bin
Dec = Dec \ 2
Loop Until Dec = 0
End Function

Public Function Bin2Dec(Bin)
Dim i As Integer
For i = 1 To Len(Bin)
Bin2Dec = Bin2Dec * 2 + CInt(Mid(Bin, i, 1))
Next
End Function

なぜこうなってしまうのか、最上位に1を入れても1000000000000
のように表示させるにはどうしたらよいか教えていただきたいです。
よろしくお願いします。

A 回答 (1件)

VBはよく知らないのですが検索したところ符号なし整数型はないようですね


integerをlongにすれば何とかなるかも
Dec = CInt("&H" + Hex)

Dec = CLng("&H" + Hex)
    • good
    • 0
この回答へのお礼

できました。
ありがとうございました。

お礼日時:2006/07/14 11:06

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