分析某些ISO8583字段时出错

  • 本文关键字:字段 出错 ISO8583 j8583
  • 更新时间 :
  • 英文 :


我正在将j8583评估为解析ISO8583消息的库。它几乎对所有字段都起到了预期的作用,但我很难获得字段33的正确值。

我创建了以下单元测试:

@Test
public void testDecode() throws IOException, ParseException {
MessageFactory<IsoMessage> messageFactory = ConfigParser.createFromClasspathConfig("j8583.xml");
messageFactory.setUseBinaryMessages(true);
String testData = "0100000000018000000006560103095900000360";
IsoMessage isoMessage = messageFactory.parseMessage(HexCodec.hexDecode(testData), 0);
assertEquals("560103", isoMessage.getField(32).toString());
assertEquals("590000036", isoMessage.getField(33).toString());
}

这是我的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE j8583-config PUBLIC "-//J8583//DTD CONFIG 1.0//EN" "http://j8583.sourceforge.net/j8583.dtd">
<j8583-config>
<parse type="0100">
<field num="32" type="LLBCDBIN" length="11"/>
<field num="33" type="LLBCDBIN" length="11"/>
</parse>
</j8583-config>

当运行单元测试时,字段32被正确解析,但33失败。我得到的字段33的值是900000360

由于它们配置相同,数据似乎相同(06560103095900000360(,我不明白为什么这不能正确解析

对于奇数长度,值是左填充的,而不是右填充的。所以第一个半字节被忽略,而不是最后一个。

很抱歉,文档中没有明确说明。我会修改它来具体说明这一点。

最新更新