我对字段有要求127.25.1 >> 127.25.30
。它们包含 tlv 数据。字段127.25.1
是位图,它们需要以下格式: b8 (Hex16) 表示二进制必须转换为十六进制。该字段表示存在/不存在127.25.2 >> 127.25.30
。IsoFieldPackager 的长度为127.25.1
16。IFA_BITMAP
我可以毫无问题地设置所有其他字段。
要查看输出消息及其数据,我使用它来打印:
ISOComponent c = isoMessage.getComponent("127.25");
Map m = c.getChildren();
Iterator it = m.entrySet().iterator();
while (it.hasNext()) {
if(pair.getValue() instanceof ISOBitMap){
ISOBitMap b = (ISOBitMap)pair.getValue();
System.out.println(b.getFieldNumber() + "=" + b.getValue() );
}
if(pair.getValue() instanceof ISOField){
ISOField b = (ISOField)pair.getValue();
System.out.println(b.getFieldNumber() + "=" + b.getValue());
}
由此,我可以看到 127.25.1 中的位图打印为:
-1={2, 5, 6, 7, 12, 13, 18, 22, 24, 26, 27, 28, 30}
并且所有这些字段都有正确的值并且是我设置的字段。
我的问题是在远程系统上解析时失败。给定所需的格式127.25.1 "b8 (Hex16)"
,我是否使用IFA_BITMAP
长度为 16 的正确数据类型?