Java 如何解析十六进制iso8583行?

Java 如何解析十六进制iso8583行?,java,iso8583,Java,Iso8583,代码如下: import org.jpos.iso.packager.ISO87BPackager; import org.jpos.iso.ISOException; import org.jpos.iso.ISOMsg; import org.jpos.iso.ISOUtil; public class ParseISOMsg { public static void main(String[] args) throws ISOException { String

代码如下:

import org.jpos.iso.packager.ISO87BPackager;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISOUtil;

public class ParseISOMsg {
    public static void main(String[] args) throws ISOException {
        String hexmsg = "3038313082200000020000000400000000000000111312532012345630300301";
        // convert hex string to byte array
        byte[] bmsg =ISOUtil.hex2byte(hexmsg);
        ISOMsg m = new ISOMsg();
        // set packager, change ISO87BPackager for the matching one.
        m.setPackager(new ISO87BPackager());
        //unpack the message using the packager
        m.unpack(bmsg);
        //dump the message to standar output
        m.dump(System.out, "");
    }
}
现在发布了一个例外:

Exception in thread "main" org.jpos.iso.ISOException: org.jpos.iso.IFB_NUMERIC: Problem unpacking field 23 (java.lang.ArrayIndexOutOfBoundsException: 32) unpacking field=23, consumed=31
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:340)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:468)
    at ParseISOMsg.main(ParseISOMsg.java:17)

告诉我为什么我不能发布这一行-3038313082200000002000040000000000000111131253201234563030300301?

这似乎是一个奇怪的打包程序,它使用BCD编码大多数字段,但使用ASCII编码MTI。我建议您基于iso87binary.xml创建自己的字段打包程序。如果要将字段0定义从
IFB\u NUMERIC
更改为
IFA\u NUMERIC
,则会得到如下结果:


为了创建打包程序,您需要使用如下代码:

ISOPackager p=newgenericpackager(“yourpackager.xml”);

谢谢。现在我有类似的55场。rg.jpos.iso.ISOException:org.jpos.iso.IFB_lllBinary:解包问题字段55(java.lang.ArrayIndexOutOfBoundsException)解包字段=55,消耗=187