我正在格式化 BCD 字段:
msg[60] = FieldDescriptor.BcdVar(3, 125, Formatters.Bcd);
打包消息时,lib 会引发异常。复制很简单。
我发现在 BCD 和 Binary Var 中,当长度指示符为奇数(1 或 3)时,就会发生异常。
我在 VariableLengthFormatter.Pack() 中进行了更改:
var lengthStr = length.ToString().PadLeft(LengthOfLengthIndicator, '0');
至
var lengthStr = length.ToString().PadLeft(_lengthIndicator, '0');
使用解压后的长度来填充字符串,问题得到解决(好吧,我在BinaryFormatter中添加了FieldDescriptor.BinaryVar()和一些修复,我很乐意分享)。
所以,我的问题是:这是一个错误并已修复,还是我错过了使用(写得很好)库并吠叫了错误的树?
如果它是一个错误 - 是否可以在我的代码中以一些面向对象的魔法来修复它(比如在想要更改默认模板格式时扩展类 Iso8583),或者修复必须在 lib 本身以及新的 lib 版本时出去会有合并问题吗?
PS - 我是 C# 新手(经验丰富的 C 程序员)
谢谢。