私はこの作品を完成させるのに本当に苦労しています。考えや指針があればとても助かります。これが私の問題です:
私はISO 8583レイヤーに取り組んでおり、データ要素 32 は n ..11 として定義されています。これは、要素が数値であり、最大サイズが 11 の可変長であることを意味します。
これは (ASCII ではなく) バイナリ形式で送信する必要があります。
LLNN を表示する必要があります。ex ISO バイナリ raw は次のようになります: 11 06 01 04 00 00 00
これまで、BCD(06 01 04 00 00 00) で 6 の (11/2)+(11%2) サイズの byte[] 配列を完全に埋めることができました。そして、フィールドの全長を 11 として計算しました。これを byte[0] に挿入する必要がありますbyte[]
。11 は 0B ではありません。つまり、 0001 0001 は 11 として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);