我真的很难完成这篇文章,任何想法或指示都会对我有很大帮助。这是我的问题:
我正在研究ISO 8583层,数据元素 32 定义为 n ..11,这意味着该元素是数字、可变长度,最大大小为 11。
这需要以二进制格式(不是 ASCII)发送。
我们需要显示 LLNN,ex ISO 二进制原始文件应如下所示:11 06 01 04 00 00 00
到现在为止,我能够用 BCD(06 01 04 00 00 00) 填充大小为 6 的 (11/2)+(11%2) 字节 [] 数组。我得到了计算为 11 的字段的总长度,现在我需要在 byte[0] 处插入它,其中 11 不是 0B 即 0001 0001 打包到一个字节byte[]
为 11 ,当我给出 nBytes=1 时,我的逻辑如下所示(BCD ISO 中的前 255 个字符)它将长度字段值插入为 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);