Iso jPOS-F35轨道2-如何包装1字节二进制长度,与BCD数据包括一个字符delimeter?

Iso jPOS-F35轨道2-如何包装1字节二进制长度,与BCD数据包括一个字符delimeter?,iso,iso8583,jpos,Iso,Iso8583,Jpos,因此,我一直对JPO感到满意,而不是凭空想象的专家 我的规范将F35轨道2定义为: "Variable Length, 1 byte binary + 37 N, 4-bit BCD (unsigned packed); maximum 20 bytes" Trk2#35=4123456891023457449121010000020100000 因此,我在GenericPackager中定义了该字段: <isofield id="35&qu

因此,我一直对JPO感到满意,而不是凭空想象的专家

我的规范将F35轨道2定义为:

"Variable Length, 1 byte binary + 37 N, 4-bit BCD (unsigned packed); maximum 20 bytes"
Trk2#35=4123456891023457449121010000020100000
因此,我在GenericPackager中定义了该字段:

 <isofield
      id="35"
      length="37"
      name="TRACK 2 DATA"
      pad="true"
      class="org.jpos.iso.IFB_LLHNUM"/>
我的收购流程收到F35,如下所示:

"Variable Length, 1 byte binary + 37 N, 4-bit BCD (unsigned packed); maximum 20 bytes"
Trk2#35=4123456891023457449121010000020100000
很明显,“D”分隔符不是数字,而是字符

我查看了可用的IsofieldPackager,但在数字数据中找不到任何处理字符分隔符的类

我的说明书中提到的另一件事是

The Track 2 delimiter/separator character (^) must be encoded as X'D' (binary 1101).
如何发送此字段的字符分隔符


非常感谢您的帮助

规范错误,插入符号在轨道1中用作分隔符,而不是轨道2。
D是track2的分隔符,由JPO使用您的ISOFieldPackager配置正确处理。

为什么当我通过D时,它在审核中变为4?所以这是正确的答案。我通过将输入字符串中的“D”更改为“=”来“修复”输出,后者是我的规范没有提到的实际分隔符。为什么它会转换为“D”我还没有花时间去发现yetTrack2规范将分隔符映射到十六进制数字
D
,JPO在编码/解码时会处理这个问题。