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") FooBar **VBA Code** Option Explicit Const HEX_STRING_PREFIX As String = "0x" Const VBA_HEX_PREFIX As String = "&h" Public 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 If End Function Public 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 If SafeExit: Exit Function DecodeError: HexDecode = CVErr(xlErrValue) End Function