请教:二进制转十六进制问题
' 用途:将二进制转化为十六进制
' 输入:Bin(二进制数)
' 输入数据类型:String
' 输出:BIN_to_HEX(十六进制数)
' 输出数据类型:String
' 输入的最大数为2147483647个字符
Public Function BIN_to_HEX(ByVal Bin As String) As String
Dim i As Long
Dim H As String
If Len(Bin) Mod 4 <> 0 Then
Bin = String(4 - Len(Bin) Mod 4, "0 ") & Bin
End If
For i = 1 To Len(Bin) Step 4
Select Case Mid(Bin, i, 4)
Case "0000 ": H = H & "0 "
Case "0001 ": H = H & "1 "
Case "0010 ": H = H & "2 "
Case "0011 ": H = H & "3 "
Case "0100 ": H = H & "4 "
Case "0101 ": H = H & "5 "
Case "0110 ": H = H & "6 "
Case "0111 ": H = H & "7 "
Case "1000 ": H = H & "8 "
Case "1001 ": H = H & "9 "
Case "1010 ": H = H & "A "
Case "1011 ": H = H & "B "
Case "1100 ": H = H & "C "
Case "1101 ": H = H & "D "
Case "1110 ": H = H & "E "
Case "1111 ": H = H & "F "
End Select
Next i
While Left(H, 1) = "0 "
H = Right(H, Len(H) - 1)
Wend
BIN_to_HEX = H
END Function
'我的问题是传入00000000(8个0)进来计算。结果为空。
'请问是什么问题呢??
或者VB中二进制转十六进制有更好的办法吗?
[解决办法]
While Left(H, 1) = "0 "
H = Right(H, Len(H) - 1)
Wend
把这句删掉就OK了
[解决办法]
我的问题是传入00000000(8个0)进来计算。结果为空。
'请问是什么问题呢?? H是00的缘故
While Left(H, 1) = "0 "
H = Right(H, Len(H) - 1)
Wend
返回就是 " "
为了防止 " "出现,你在最后增加一个
While Left(H, 1) = "0 "
H = Right(H, Len(H) - 1)
Wend
IF H = " " THEN H = "0 "