如下是24位二进制数据转换为16进制的函数: Public Function bin_hex() '2-16转换 bb_h(6) = fasong(31) & fasong(30) & fasong(29) & fasong(28) bb_h(7) = fasong(27) & fasong(26) & fasong(25) & fasong(24) bb_h(0) = fasong(23) & fasong(22) & fasong(21) & fasong(20) bb_h(1) = fasong(19) & fasong(18) & fasong(17) & fasong(16) bb_h(2) = fasong(15) & fasong(14) & fasong(13) & fasong(12) bb_h(3) = fasong(11) & fasong(10) & fasong(9) & fasong(8) bb_h(4) = fasong(7) & fasong(6) & fasong(5) & fasong(4) bb_h(5) = fasong(3) & fasong(2) & fasong(1) & fasong(0) For i = 0 To 7 If bb_h(i) = "1111" Then bb_hh(i) = "F" ElseIf bb_h(i) = "1110" Then bb_hh(i) = "E" ElseIf bb_h(i) = "1101" Then bb_hh(i) = "D" ElseIf bb_h(i) = "1100" Then bb_hh(i) = "C" ElseIf bb_h(i) = "1011" Then bb_hh(i) = "B" ElseIf bb_h(i) = "1010" Then bb_hh(i) = "A" ElseIf bb_h(i) = "1001" Then bb_hh(i) = "9" ElseIf bb_h(i) = "1000" Then bb_hh(i) = "8" ElseIf bb_h(i) = "0111" Then bb_hh(i) = "7" ElseIf bb_h(i) = "0110" Then bb_hh(i) = "6" ElseIf bb_h(i) = "0101" Then bb_hh(i) = "5" ElseIf bb_h(i) = "0100" Then bb_hh(i) = "4" ElseIf bb_h(i) = "0011" Then bb_hh(i) = "3" ElseIf bb_h(i) = "0010" Then bb_hh(i) = "2" ElseIf bb_h(i) = "0001" Then bb_hh(i) = "1" ElseIf bb_h(i) = "0000" Then bb_hh(i) = "0" End If Next i fa1 = bb_hh(6) & bb_hh(7) & bb_hh(0) & bb_hh(1) & bb_hh(2) & bb_hh(3) & bb_hh(4) & bb_hh(5) Text4 = fa1 End Function如下是16进制数据转换为2进制的函数 Private Function hex_bin1() '16-2转换 For i = 1 To 6 cclG(i) = Mid(blLg, i, 1) If cclG(i) >= Chr(48) And cclG(i) <= Chr(57) Or cclG(i) >= Chr(65) And cclG(i) <= Chr(70) Then cclG(i) = cclG(i) Else Exit Function '退出过程函数 End If Next i For j = 1 To 6 blg = cclG(j) If blg = "F" Then blg_dm = "1111" ElseIf blg = "E" Then blg_dm = "1110" ElseIf blg = "D" Then blg_dm = "1101" ElseIf blg = "C" Then blg_dm = "1100" ElseIf blg = "B" Then blg_dm = "1011" ElseIf blg = "A" Then blg_dm = "1010" ElseIf blg = "9" Then blg_dm = "1001" ElseIf blg = "8" Then blg_dm = "1000" ElseIf blg = "7" Then blg_dm = "0111" ElseIf blg = "6" Then blg_dm = "0110" ElseIf blg = "5" Then blg_dm = "0101" ElseIf blg = "4" Then blg_dm = "0100" ElseIf blg = "3" Then blg_dm = "0011" ElseIf blg = "2" Then blg_dm = "0010" ElseIf blg = "1" Then blg_dm = "0001" ElseIf blg = "0" Then blg_dm = "0000" Else: blg_dm = "" End If cclLg(j) = blg_dm Next j ztG_dm1 = cclLg(1) + cclLg(2) + cclLg(3) + cclLg(4) + cclLg(5) + cclLg(6) Text5 = ztG_dm1 End Function 以上代码都为实用的工控机的2-16和16-2的进制转换函数,你可修改后用于你的需要,我是解决24设备状态的转换用的.
上述2-16转换是32位二进制用于控制现场32个设备的,其中fasong()数组为0或1状态.
'16进制数转为二进制需通过编程解决 , 以下给出VB的代码: Option Explicit Dim bl As String * 1 Dim ccl(3) As String Dim ccll(3) As String Dim bl_dm As String Dim zt_dm1 As String Dim I As Integer Dim j As Integer Dim bll As StringPrivate Sub Command1_Click() bll = InputBox("输入16进制数") Call hex_bin End SubPublic Function hex_bin() For I = 1 To 2 ccl(I) = Mid(bll, I, 1) Next I For j = 1 To 2 bl = ccl(j) If bl = "F" Then bl_dm = "1111" ElseIf bl = "E" Then bl_dm = "1110" ElseIf bl = "D" Then bl_dm = "1101" ElseIf bl = "C" Then bl_dm = "1100" ElseIf bl = "B" Then bl_dm = "1011" ElseIf bl = "A" Then bl_dm = "1010" ElseIf bl = "9" Then bl_dm = "1001" ElseIf bl = "8" Then bl_dm = "1000" ElseIf bl = "7" Then bl_dm = "0111" ElseIf bl = "6" Then bl_dm = "0110" ElseIf bl = "5" Then bl_dm = "0101" ElseIf bl = "4" Then bl_dm = "0100" ElseIf bl = "3" Then bl_dm = "0011" ElseIf bl = "2" Then bl_dm = "0010" ElseIf bl = "1" Then bl_dm = "0001" ElseIf bl = "0" Then bl_dm = "0000" Else: bl_dm = "" End If ccll(j) = bl_dm Next j zt_dm1 = ccll(1) + ccll(2) ' + ccll(3) + ccll(4) Text1 = zt_dm1 End Function
Public Function bin_hex()
'2-16转换
bb_h(6) = fasong(31) & fasong(30) & fasong(29) & fasong(28)
bb_h(7) = fasong(27) & fasong(26) & fasong(25) & fasong(24)
bb_h(0) = fasong(23) & fasong(22) & fasong(21) & fasong(20)
bb_h(1) = fasong(19) & fasong(18) & fasong(17) & fasong(16)
bb_h(2) = fasong(15) & fasong(14) & fasong(13) & fasong(12)
bb_h(3) = fasong(11) & fasong(10) & fasong(9) & fasong(8)
bb_h(4) = fasong(7) & fasong(6) & fasong(5) & fasong(4)
bb_h(5) = fasong(3) & fasong(2) & fasong(1) & fasong(0)
For i = 0 To 7
If bb_h(i) = "1111" Then
bb_hh(i) = "F"
ElseIf bb_h(i) = "1110" Then
bb_hh(i) = "E"
ElseIf bb_h(i) = "1101" Then
bb_hh(i) = "D"
ElseIf bb_h(i) = "1100" Then
bb_hh(i) = "C"
ElseIf bb_h(i) = "1011" Then
bb_hh(i) = "B"
ElseIf bb_h(i) = "1010" Then
bb_hh(i) = "A"
ElseIf bb_h(i) = "1001" Then
bb_hh(i) = "9"
ElseIf bb_h(i) = "1000" Then
bb_hh(i) = "8"
ElseIf bb_h(i) = "0111" Then
bb_hh(i) = "7"
ElseIf bb_h(i) = "0110" Then
bb_hh(i) = "6"
ElseIf bb_h(i) = "0101" Then
bb_hh(i) = "5"
ElseIf bb_h(i) = "0100" Then
bb_hh(i) = "4"
ElseIf bb_h(i) = "0011" Then
bb_hh(i) = "3"
ElseIf bb_h(i) = "0010" Then
bb_hh(i) = "2"
ElseIf bb_h(i) = "0001" Then
bb_hh(i) = "1"
ElseIf bb_h(i) = "0000" Then
bb_hh(i) = "0"
End If
Next i
fa1 = bb_hh(6) & bb_hh(7) & bb_hh(0) & bb_hh(1) & bb_hh(2) & bb_hh(3) & bb_hh(4) & bb_hh(5)
Text4 = fa1
End Function如下是16进制数据转换为2进制的函数
Private Function hex_bin1()
'16-2转换
For i = 1 To 6
cclG(i) = Mid(blLg, i, 1)
If cclG(i) >= Chr(48) And cclG(i) <= Chr(57) Or cclG(i) >= Chr(65) And cclG(i) <= Chr(70) Then
cclG(i) = cclG(i)
Else
Exit Function '退出过程函数
End If
Next i
For j = 1 To 6
blg = cclG(j)
If blg = "F" Then
blg_dm = "1111"
ElseIf blg = "E" Then
blg_dm = "1110"
ElseIf blg = "D" Then
blg_dm = "1101"
ElseIf blg = "C" Then
blg_dm = "1100"
ElseIf blg = "B" Then
blg_dm = "1011"
ElseIf blg = "A" Then
blg_dm = "1010"
ElseIf blg = "9" Then
blg_dm = "1001"
ElseIf blg = "8" Then
blg_dm = "1000"
ElseIf blg = "7" Then
blg_dm = "0111"
ElseIf blg = "6" Then
blg_dm = "0110"
ElseIf blg = "5" Then
blg_dm = "0101"
ElseIf blg = "4" Then
blg_dm = "0100"
ElseIf blg = "3" Then
blg_dm = "0011"
ElseIf blg = "2" Then
blg_dm = "0010"
ElseIf blg = "1" Then
blg_dm = "0001"
ElseIf blg = "0" Then
blg_dm = "0000"
Else:
blg_dm = ""
End If
cclLg(j) = blg_dm
Next j
ztG_dm1 = cclLg(1) + cclLg(2) + cclLg(3) + cclLg(4) + cclLg(5) + cclLg(6)
Text5 = ztG_dm1
End Function
以上代码都为实用的工控机的2-16和16-2的进制转换函数,你可修改后用于你的需要,我是解决24设备状态的转换用的.
Option Explicit
Dim bl As String * 1
Dim ccl(3) As String
Dim ccll(3) As String
Dim bl_dm As String
Dim zt_dm1 As String
Dim I As Integer
Dim j As Integer
Dim bll As StringPrivate Sub Command1_Click()
bll = InputBox("输入16进制数")
Call hex_bin
End SubPublic Function hex_bin()
For I = 1 To 2
ccl(I) = Mid(bll, I, 1)
Next I
For j = 1 To 2
bl = ccl(j)
If bl = "F" Then
bl_dm = "1111"
ElseIf bl = "E" Then
bl_dm = "1110"
ElseIf bl = "D" Then
bl_dm = "1101"
ElseIf bl = "C" Then
bl_dm = "1100"
ElseIf bl = "B" Then
bl_dm = "1011"
ElseIf bl = "A" Then
bl_dm = "1010"
ElseIf bl = "9" Then
bl_dm = "1001"
ElseIf bl = "8" Then
bl_dm = "1000"
ElseIf bl = "7" Then
bl_dm = "0111"
ElseIf bl = "6" Then
bl_dm = "0110"
ElseIf bl = "5" Then
bl_dm = "0101"
ElseIf bl = "4" Then
bl_dm = "0100"
ElseIf bl = "3" Then
bl_dm = "0011"
ElseIf bl = "2" Then
bl_dm = "0010"
ElseIf bl = "1" Then
bl_dm = "0001"
ElseIf bl = "0" Then
bl_dm = "0000"
Else:
bl_dm = ""
End If
ccll(j) = bl_dm
Next j
zt_dm1 = ccll(1) + ccll(2) ' + ccll(3) + ccll(4)
Text1 = zt_dm1
End Function