文字型変数を使って2進数表示すると、最上位ビットに1を立てると値に-記号が入ってしまいます
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
のように表示させるにはどうしたらよいか教えていただきたいです。
よろしくお願いします。
お礼
早速試してみます。 回答ありがとうございました。