7,785
社区成员




Dim j As Long = 0
Dim tempstr As New System.Text.StringBuilder '此法拼接字符串,效率很高
Dim temps As String = ""
For j = qd To qd + bytes - 1
temps = Hex(outBytes(j))
If Len(temps) = 1 Then
tempstr.Append("0" & temps & Space(1))
Else
tempstr.Append(temps & Space(1))
End If
' tempstr.Append(outBytes(j).ToString("X2") & Space(1)) '等价的均可用--方法2
' tempstr.Append([String].Format("{0:X2} ", outBytes(j))) '等价的均可用--方法3
System.Windows.Forms.Application.DoEvents() '释放控制权给程序的其他
Next
viewmsg.AppendText(tempstr.ToString)
Function BinArrayToHex(Bin() As Byte) As String
Dim iLoop As Integer
Dim sResult As String
sResult = " "
For iLoop = LBound(Bin) To UBound(Bin)
sResult = sResult + Right("0" & Hex(Bin(iLoop)), 2) & " "
Next iLoop
BinArrayToHex = sResult
End Function
Dim tByte As Long
Dim tHEX As String
For tByte = 0 To 255
tHEX = Hex(tByte)
If Len(tHEX) < 2 Then tHEX = "0" & tHEX
Debug.Print tHEX & " ";
Next
'第一种用法
'输出Ascii编码的HEX串(可直接存盘的,显示需要StrConv转换)
Text2.Text = StrConv(BytesHEX(tBytes()), vbUnicode)
'第二种用法
'输出Unicode编码的HEX串(在VB下直接可显示的)
'函数输出的是Byte数组,但这里却赋给了字符串。
'因为:VB下的Byte数组和字符串之间是可以互相赋值的。
Text3.Text = BytesHEX(tBytes(), , True)
Function BytesHEX(ByRef pBytes() As Byte, Optional ByVal pLimit As Byte = &H20, Optional ByVal pUnicode As Boolean = False) As Byte()
Dim tSurBytes_Index As Long
Dim tDesBytes() As Byte, tDesBytes_Index As Long, tDesBytes_Length As Long
tDesBytes_Length = UBound(pBytes()) * 3 * ((pUnicode And 1) + 1) + 2 + (pUnicode And 3)
ReDim tDesBytes(tDesBytes_Length)
For tDesBytes_Index = 0 To tDesBytes_Length Step (3 + (pUnicode And 3))
tDesBytes(tDesBytes_Index) = HexEnCode(pBytes(tSurBytes_Index) \ 16)
tDesBytes(tDesBytes_Index + 1 + (pUnicode And 1)) = HexEnCode(pBytes(tSurBytes_Index) Mod 16)
tDesBytes(tDesBytes_Index + 2 + (pUnicode And 2)) = pLimit
tSurBytes_Index = tSurBytes_Index + 1
Next
BytesHEX = tDesBytes()
End Function
Function HexEnCode(pHEX As Byte) As Byte
'根据0~15的Byte数值输出0~F的Ascii码
'这行函数的意思是:HexEnCode = 48 + pHEX;如果pHEX>9,那么HexEnCode再加7。
HexEnCode = 48 + pHEX + ((pHEX > 9) And 7)
End Function
Dim tByte As Long
For tByte = 0 To 255
Debug.Print Replace(Mid(String(16, "0") & String(240, "G"), tByte + 1, 1) & Hex(tByte), "G", "") & " ";
Next
Dim tByte As Long
For tByte = 0 To 255
Debug.Print Replace(Replace("汤姆杰瑞", "杰瑞", Hex(tByte Mod 16)), "汤姆", Hex(tByte \ 16)) & " ";
Next
Dim tByte As Long
Dim tHEXs() As String
tHEXs() = Split("00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF", " ")
For tByte = 0 To 255
Debug.Print tHEXs(tByte) & " ";
Next
Dim tByte As Long
For tByte = 0 To 255
Debug.Print String((tByte < 16) And 1, "0") & Hex(tByte) & " ";
Next
Function ByteHEX(ByRef pByte As Byte) As String
Dim tHEX(3) As Byte
tHEX(1) = pByte \ 16: tHEX(3) = pByte Mod 16
tHEX(0) = 48 + tHEX(1) + ((tHEX(1) > 9) And 7)
tHEX(2) = 48 + tHEX(3) + ((tHEX(3) > 9) And 7)
tHEX(1) = 0: tHEX(3) = 0
ByteHEX = tHEX()
End Function