任何人都可以回答通常如何为具有子字段值的字段计算BCD数据吗?
我不是在代码方面,因为我把那部分内容固定下来了。
我的意思是说我有X字段,该字段包含5个子值的数据。该字段是BCD,但是每个子值都将转换为BCD,然后附加到字段X,还是将它们明码添加到字段X,然后整体转换为BCD?
无法在任何地方找到明确的答案...即使在我正在处理的邮件规范中也是如此
干杯,迈克·K
您必须知道字段X的格式和子字段的格式。让我举一个例子。
假设您想使用字段X将emv数据形式pos传输到主机。X字段的格式如下所述。
Length Attribute 3字节LLL要跟随的数据长度子字段1个可变字节,第一个附加子字段子字段2个var字节第二个附加子字段...子字段n个字节,第n个附加子字段
每个附加子字段的结构如下标签名称2个字节标签长度1个字节标签值..bytes
如果一个字段包含子字段,则每个子字段都以其自己的格式打包或解包。
然后不应再次打包或解包子字段。
如果字段包含子字段,则无需定义字段主体的格式。但是,可以定义字段头格式(标签或长度)。
下面的示例包含一个具有三个子字段的字段
Message Structure:
<f type="VAL" name="Parent" len="30">
<f type="VAL" name="Child1" bodyPacker="BcdBodyPacker" len="9"/>
<f type="VAL" name="Child2" bodyPacker="BcdBodyPacker" len="10"/>
<f type="VAL" name="Child3" bodyPacker="BcdBodyPacker" len="11"/>
</f>
Message data:
<f name="Parent">
<f name="Child1" val="value1_11111111111" valHex="71C551F11111111111"/>
<f name="Child2" val="value2_2222222222222" valHex="71C552F2222222222222"/>
<f name="Child3" val="value3_333333333333333" valHex="71C553F333333333333333"/>
</f>
Message bytes in hex:
71C551F1111111111171C552F222222222222271C553F333333333333333
示例的源代码可在GitHub上找到
iso-8583-packer Java库用于创建此示例。我是图书馆的作者。