I needed to convert some Ascii text to binary in Hex format 0x00FF....I've written an EncodeHex and a DecodeHex function to do the conversion.I've avoided using concatenation in favour of performance.I'm assuming that assigning the results of CByte(&h80) to a byte array, and then using StrConv to convert the array to a Unicode string, is more efficient than assigning the results of Chr$(&h80) to a string array, and then using Join to concatenate the strings.I need to use this in Excel, so I'm using CVErr(xlErrValue) to return errors, but this could maybe benefit from being more generic.Sample usage?HexEncode(FooBar)0x466F6F426172?HexDecode(0x466F6F426172)FooBarVBA CodeOption ExplicitConst HEX_STRING_PREFIX As String = 0xConst VBA_HEX_PREFIX As String = &hPublic Function HexEncode(AsciiText As String, Optional HexPrefix As String = HEX_STRING_PREFIX) As String  If AsciiText = vbNullString Then    HexEncode = AsciiText  Else    Dim asciiChars() As Byte    asciiChars = StrConv(AsciiText, vbFromUnicode)    ReDim hexChars(LBound(asciiChars) To UBound(asciiChars)) As String    Dim char As Long    For char = LBound(asciiChars) To UBound(asciiChars)      hexChars(char) = Right$(00 & Hex$(asciiChars(char)), 2)    Next char    HexEncode = HexPrefix & Join(hexChars, )  End IfEnd FunctionPublic Function HexDecode(HexString As String, Optional HexPrefix As String = HEX_STRING_PREFIX)  'Check if there's anything to decode  If HexString = vbNullString Then    HexDecode = vbNullString    Exit Function  Else    If Not StrComp(Left$(HexString, Len(HexPrefix)), HexPrefix, vbTextCompare) = 0 Then      'Unexpected string format      GoTo DecodeError    End If    Dim hexRaw As String    hexRaw = Mid$(HexString, 1 + Len(HexPrefix))    'Check if the string is valid for decoding    If Len(hexRaw) Mod 2 = 1 Then      GoTo DecodeError    End If    Dim numHexChars As Long    numHexChars = Len(hexRaw) / 2    ReDim hexChars(0 To numHexChars - 1) As Byte    Dim char As Long    For char = 0 To numHexChars - 1      Dim hexchar As String      hexchar = VBA_HEX_PREFIX & Mid$(hexRaw, 1 + char * 2, 2)      'Check if the hex-pair is actually hex      If Not IsNumeric(hexchar) Then        GoTo DecodeError      End If      hexChars(char) = CByte(hexchar)    Next char    'Return the concatenated bytes as a string    HexDecode = StrConv(hexChars, vbUnicode)  End IfSafeExit:  Exit FunctionDecodeError:  HexDecode = CVErr(xlErrValue)End Function
Hex encoding and decoding of ASCII strings in VBA
strings;vba;serialization