我格式化BCD字段: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');
使用解壓後的長度用於填充字符串,這個問題是固定的(當然,我加入FieldDescriptor。 BinaryVar()和BinaryFormatter幾個修復程序,我很樂意分享)。
所以,我的問題是:它是一個錯誤,是固定的,還是我錯過 - 使用(很好的書面)庫和吠樹錯?
如果它是一個錯誤 - 它可以在我的代碼中修復某些面向對象的魔法(比如想要更改默認模板格式時擴展類Iso8583),或者修復必須位於lib本身以及何時一個新的lib版本會出現合併問題?
PS - 我是新的C#(有經驗的C程序員)
感謝。
我想建議您創建一個[擴展方法](http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx),但現在我看到'FieldDescriptor.BcdVar'是一個'static'方法,你不能用新的靜態方法來擴展這個類。所以,是的,最好的方法是修補代碼並與社區共享修補程序。 :) – Groo