My byte array optimized Hex to ASCii conversion.
VB Code:
  1. Public Function HexToAsc(ByVal hstr As String) As String
  2. Dim x As Long
  3. Dim hBa() As Byte
  4. Dim hBv(1) As Byte
  5. hBa = StrConv(hstr, vbFromUnicode)
  6. ReDim nstr((UBound(hBa) + 1) / 2 - 1) As Byte
  7. For x = 0 To UBound(hBa) - 1 Step 2
  8. hBv(0) = hBa(x)
  9. If hBv(0) < 65 Then
  10.  hBv(0) = hBv(0) - 48
  11. Else
  12.  hBv(0) = hBv(0) - 55
  13. End If
  14. hBv(1) = hBa(x + 1)
  15. If hBv(1) < 65 Then
  16.  hBv(1) = hBv(1) - 48
  17. Else
  18.  hBv(1) = hBv(1) - 55
  19. End If
  20. nstr(x / 2) = hBv(0) * 16 + hBv(1)
  21. Next
  22. HexToAsc = StrConv(nstr, vbUnicode)
  23. End Function

ASCii to Hex:
VB Code:
  1. Public Function AsctoHex(ByVal astr As String) As String
  2. Dim x As Long
  3. Dim hBa() As Byte
  4. Dim hBv As Byte
  5. hBa = StrConv(astr, vbFromUnicode)
  6. ReDim nBa((UBound(hBa) + 1) * 2 - 1) As Byte
  7. For x = 0 To UBound(hBa)
  8.  hBv = hBa(x) \ 16
  9.  If hBv < 10 Then
  10.   nBa(x * 2) = 48 + hBv
  11.  Else
  12.   nBa(x * 2) = 55 + hBv
  13.  End If
  14.  hBv = hBa(x) Mod 16
  15.  If hBv < 10 Then
  16.   nBa((x + 1) * 2 - 1) = 48 + hBv
  17.  Else
  18.   nBa((x + 1) * 2 - 1) = 55 + hBv
  19.  End If
  20. Next
  21. AsctoHex = StrConv(nBa, vbUnicode)
  22. End Function