Я действительно изо всех сил пытаюсь завершить эту часть, любые мысли или указатели мне очень помогут. Вот моя проблема:
Я работаю над уровнем ISO 8583, и элемент данных 32 определяется как n ..11, что означает элемент числовой, переменной длины с максимальным размером 11.
и это нужно отправить в двоичном формате (не ASCII).
Нам нужно показать LLNN, исходный двоичный файл ISO должен выглядеть так: 11 06 01 04 00 00 00
До сих пор мне удавалось заполнить массив byte[] размером (11/2)+(11%2) 6 с помощью BCD(06 01 04 00 00 00). и я получил общую длину поля, рассчитанную как 11. Теперь мне нужно вставить это в байт [0] с 11, а не 0B, то есть 0001 0001, упакованным в один байт byte[]
as 11, моя логика, как показано ниже, когда я даю nBytes=1 (первые 255 символов в BCD ISO) он вставит значение поля длины либо как 0b 01 04 00 00 00, либо если я передам nBytes как 2, это даст 00 0b 04 00 00 00. Что-то не так с правильной логикой сдвига. .
Может ли кто-нибудь помочь мне и исправить эту приведенную ниже логику, чтобы получить результаты как 11 06 01 04 00 00 00
int nBytes=1;
for (int i = nBytes - 1; i >= 0; i--) {
buf[i] = (byte)(length & 0xFF);
length >>= 8;
}
outstream.write(buf);
11 06 01 04 00 00 00
? И что подразумевается под(11/2)+(11%2)
?, а также что означает nBytes? Кроме того, каково содержание buf[] заранее? - person Micha Wiedenmann   schedule 14.12.2012