【发布时间】:2012-05-07 16:20:11
【问题描述】:
这是另一个问题。
我对 Track 2(位 35)的要求是:
Z (Numeric + X 'D' (BCD, ½ byte representation of D [1101] as a field separator between Primary Account Number and Expiration Date), BCD — 当奇数位数时,打包最右边的半字节到“0”。大小:可变为 37,前面是一个字节的 BCD 长度指示符
默认模板定义将第 35 位作为 2 字节长度的 Ascii 字段,所以我确定不是这样。我把它改成了 BcdVar(1, 37, Formatters.Bcd)。
以虚拟 track2 为例:
12345678901234567=9999999999999999999
我将“=”分隔符替换为 0x0D 整数值,该整数值转换为“13”(1101)。我们现在有:
12345678901234567139999999999999999999
这有意义吗?我认为这不是正确的做法。
【问题讨论】:
-
我也意识到转换为 BCD 需要左对齐。如果需要,它会在右侧填充,而不是像普通数字那样在左侧填充。这也适用于位 2 (PAN)。看来我要创建一个新的 BCD 格式化程序类来支持这一点。