Часто задаваемые вопросы о TBarCode OCX
Как закодировать шестнадцатеричные последовательности как двоичные значения?
Как закодировать шестнадцатеричные последовательности как двоичные значения?
TBarCode V8-V9
Для кодирования шестнадцатеричных значений в TBarCode V9 необходимо использовать «escape-последовательности» в формате «\xhh» (hh = шестнадцатеричное значение). Необходимо преобразовать шестнадцатеричную последовательность (например, из DP Premiumadress) в этот формат и включить свойство TBarCode «EscapeSequences». Ниже приведён пример кода VBA для такого преобразования:
' CreateTBCHEXString(sHexValue)
' sHexValue .... Converted data stream
' sets "\x" before each byte
Private Function CreateTBCHEXString(sHexValue)
Dim sTBCText As String
'set the prefix needed by TBarCode "\xhh"
sHexPrefix = "\x"
'bring the generated string into "\xhh" format
For i = 1 To Len(sHexValue) Step 2
sTBCText = sTBCText & sHexPrefix & Mid$(sHexValue, i, 2)
Next i
CreateTBCHEXString = sTBCText
End Function
TBarCode V10+
Вместо использования escape-последовательностей можно использовать режим кодирования Hexadecimal.
Даже при использовании escape-последовательности для двоичных данных кодировщик будет применять преобразование кодовой страницы (пример: \x88 приводит к иному значению в Data Matrix, чем требуется).
Решение:
- Отключите преобразование кодовой страницы (используйте режим кодирования LowByte)
- Принудительно включите режим двоичного кодирования, если он доступен (см. режим кодирования PDF417, Data Matrix EnforceBinaryEncoding)
Актуально для DP Premium Address и других приложений, где вы кодируете двоичные данные в 2D-символе (Data Matrix и т. д.).