Efficient Hex/Asc functions:
My byte array optimized Hex to ASCii conversion.
VB Code:
Public Function HexToAsc(ByVal hstr As String) As String
Dim x As Long
Dim hBa() As Byte
Dim hBv(1) As Byte
hBa = StrConv(hstr, vbFromUnicode)
ReDim nstr((UBound(hBa) + 1) / 2 - 1) As Byte
For x = 0 To UBound(hBa) - 1 Step 2
hBv(0) = hBa(x)
If hBv(0) < 65 Then
hBv(0) = hBv(0) - 48
Else
hBv(0) = hBv(0) - 55
End If
hBv(1) = hBa(x + 1)
If hBv(1) < 65 Then
hBv(1) = hBv(1) - 48
Else
hBv(1) = hBv(1) - 55
End If
nstr(x / 2) = hBv(0) * 16 + hBv(1)
Next
HexToAsc = StrConv(nstr, vbUnicode)
End Function
ASCii to Hex:
VB Code:
Public Function AsctoHex(ByVal astr As String) As String
Dim x As Long
Dim hBa() As Byte
Dim hBv As Byte
hBa = StrConv(astr, vbFromUnicode)
ReDim nBa((UBound(hBa) + 1) * 2 - 1) As Byte
For x = 0 To UBound(hBa)
hBv = hBa(x) \ 16
If hBv < 10 Then
nBa(x * 2) = 48 + hBv
Else
nBa(x * 2) = 55 + hBv
End If
hBv = hBa(x) Mod 16
If hBv < 10 Then
nBa((x + 1) * 2 - 1) = 48 + hBv
Else
nBa((x + 1) * 2 - 1) = 55 + hBv
End If
Next
AsctoHex = StrConv(nBa, vbUnicode)
End Function