J8583 LLLLBIN и LLLLVAR дают результат заполнения разной длины

LLLLVAR и LLLLBIN выдают различную длину, полученную из одного и того же ввода.

Попытка передать значение "6832" в тот же объект IsoMessage, однако, LLLLVAR возвращает "00046382", а LLLLBIN возвращает "000836333832".

Пример исходного кода, как показано ниже:

msg.setValue(60, "6832".toByteArray(Charsets.US_ASCII), IsoType.LLLLBIN, 10)//encodes to 000836333832 
msg.setValue(60, "6832", IsoType.LLLLVAR, 10) //encodes to 00046382 

Хотя оба должны вернуть 0004, почему оба результата отличаются?

1 ответ

Когда вы кодируете сообщения ISO в виде текста, поля LxBIN кодируют свои данные в шестнадцатеричном формате, поэтому размер в два раза больше, чем вы ожидаете. Однако декодер декодирует шестнадцатеричные данные и выдает байтовый массив при разборе.

Поля LxVAR и LxBIN имеют одинаковую длину, когда все сообщение кодируется с использованием двоичного форматирования.

Другие вопросы по тегам