我正在使用这个库:https://github.com/zemuldo/iso_8583 尝试解析和转储ISO 8583消息。
代码:
var bitMapData = '0210723A40010AE18002005000990000000750001002102636000000172636100210036014045016000042 (i'am using this library https://github.com/zemuldo/iso_8583)667818001 000000000TS0002tester 0490823 75551512000000075000000000010051003915030257360006133001';
const config = {
lenHeader: false,
lenHeaderEncoding: 'utf8',
bitmapEncoding: 'utf8',
secondaryBitmap: false,
hasSpecialFields: true,
};
let incoming = new Iso_8583().getIsoJSON(
new Buffer.alloc(bitMapData.length, bitMapData),
config
);
console.log(incoming)
代码结果:
{
'0': '0210',
'2': '00100210263600000017263610021003601404501600004266',
'3': '781800',
'4': '1',
'7': ' 000000',
'11': '000TS0',
'12': '002tes',
'13': 'ter ',
'15': ' ',
'18': ' ',
'32': '',
'37': ' ',
'39': ' ',
'41': ' ',
'42': ' 0490823 755515',
'43': '1200000007500000000001005100391503025736',
'48': '',
'49': '613',
'63': '1',
'74': '',
'76': '',
'89': '',
'92': '',
'93': '',
'96': '',
'126': '',
'128': ''
}
结果我需要:
{
'0': '0201',
'2': '',
'3': '500099',
'4': '000000075000',
'7': '1002102636',
'11': '000000',
'12': '172636',
'13': '1002',
'15': '1003',
'18': '6014',
'32': '5016',
'37': '000042667818',
'39': '00',
'41': '1',
'42': '000000000TS0002',
'43': 'tester',
'48': '0823 75551512000000075000000000010051003915030257',
'49': '360',
'63': '133001'
}
发生了一些奇怪的事情,上面的代码真的正是您正在运行的吗?
消息是:
0210723A40010AE180020050009900000007500010021026360...
MTI(在转储的第 0 位中返回(显然是:
0210723A40010AE180020050009900000007500010021026360...
----
"0210",所以你的示例应该返回 0201 很奇怪?是什么让你相信是这样。
继续,位图(消息开头的实际位图,指示消息中存在哪些字段(为:
0210723A40010AE180020050009900000007500010021026360...
----------------
它以"72"开头,因此第一位为零(0x72的第一个字节为 0111 0010(。这很奇怪,因为您发布的转储表明设置了字段 64 以外的字段。如果没有辅助位图,这是不可能的。由于辅助位图将由正在设置的主位图的第一个位指示,并且您在选项中显式禁用辅助位图,因此这不是预期的行为。
据我所知,其余的问题来自解析器将接下来的 8 个字节解释为辅助位图并移动内容:
0210723A40010AE180020050009900000007500010021026360...
----------------
字段 #2 现在(只是猜测(被解释为以 0010021 开头的 50 个字符 (BCD( 字段 ...:
0210723A40010AE180020050009900000007500010021026360...
------------> ...
这让我相信有些事情在帖子中没有提到。