0

I have the following byte array.

Dim Template(1023) As Byte

Then i call the fingerprint scanner device function and returns the following:

Template(0) = 70
Template(1) = 77
Template(2) = 82
...
Template(1023) = 0

Then i convert the Bytes array into a string hex as follows (view attached image):

Dim n As Long, i As Long
ByteArrayToHexStr = Space$(3 * (UBound(Template) - LBound(Template)) + 2)
n = 1
For i = LBound(Template) To UBound(Template)
     Mid$(ByteArrayToHexStr, n, 2) = Right$("00" & Hex$(b(i)), 2)
    n = n + 3
Next

Byte Array converted into Hex String How can i convert the hex string into a byte array again?

Thanks!!

0

2 Answers 2

2

Fancy version tolerant of manual entry:

Private Function BytesToHex(ByRef Bytes() As Byte) As String
    'Quick and dirty Byte array to hex String, format:
    '
    '   "HH HH HH"

    Dim LB As Long
    Dim ByteCount As Long
    Dim BytePos As Integer

    LB = LBound(Bytes)
    ByteCount = UBound(Bytes) - LB + 1
    If ByteCount < 1 Then Exit Function
    BytesToHex = Space$(3 * (ByteCount - 1) + 2)
    For BytePos = LB To UBound(Bytes)
        Mid$(BytesToHex, 3 * (BytePos - LB) + 1, 2) = _
            Right$("0" & Hex$(Bytes(BytePos)), 2)
    Next
End Function

Private Function HexToBytes(ByVal HexString As String) As Byte()
    'Quick and dirty hex String to Byte array.  Accepts:
    '
    '   "HH HH HH"
    '   "HHHHHH"
    '   "H HH H"
    '   "HH,HH,     HH" and so on.

    Dim Bytes() As Byte
    Dim HexPos As Integer
    Dim HexDigit As Integer
    Dim BytePos As Integer
    Dim Digits As Integer

    ReDim Bytes(Len(HexString) \ 2)  'Initial estimate.
    For HexPos = 1 To Len(HexString)
        HexDigit = InStr("0123456789ABCDEF", _
                         UCase$(Mid$(HexString, HexPos, 1))) - 1
        If HexDigit >= 0 Then
            If BytePos > UBound(Bytes) Then
                'Add some room, we'll add room for 4 more to decrease
                'how often we end up doing this expensive step:
                ReDim Preserve Bytes(UBound(Bytes) + 4)
            End If
            Bytes(BytePos) = Bytes(BytePos) * &H10 + HexDigit
            Digits = Digits + 1
        End If
        If Digits = 2 Or HexDigit < 0 Then
            If Digits > 0 Then BytePos = BytePos + 1
            Digits = 0
        End If
    Next
    If Digits = 0 Then BytePos = BytePos - 1
    If BytePos < 0 Then
        Bytes = "" 'Empty.
    Else
        ReDim Preserve Bytes(BytePos)
    End If
    HexToBytes = Bytes
End Function
Sign up to request clarification or add additional context in comments.

Comments

0

duplicate:

Convert hex value to a decimal value in VB6

from Andre Laszlo:

Dim hexVal as String 
hexVal = "#7B19AB" 
Dim intVal as Integer 
intVal = Val("&H" & Replace(hexVal, "#", ""))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.