J8583 LLLLBIN и LLLLVAR дают результат заполнения разной длины - PullRequest
0 голосов
/ 11 апреля 2019

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

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

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

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 Ответ

0 голосов
/ 11 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...