OpenISO8583.Net コードの使用方法を学習しています。元のクラスから新しい ISO8583 クラスを派生させました。私の新しいクラスの違いの 1 つは、Message Type フィールドが [Numeric, BCD] になることです。そのため、これをクラス コンストラクターの一部として記述しました (クラスの一部としてカスタム DefaultTemplate を宣言しています)。
DefaultTemplate.MsgTypeFormatter = Formatters.Bcd;
メッセージ タイプ 0100 (MsgType._0100_AUTH_REQ) の新しいメッセージを作成しました。他のビットを割り当てずに。
FDISO8583 fdISO8583 = new FDISO8583();
fdISO8583.MessageType = FDISO8583.MsgType._0100_AUTH_REQ;
byte[] testMsg = fdISO8583.ToMsg();
最終結果のバイト配列は次のとおりです: 01-00-00-00-00-00-00-00-00-00 これは正しいと思います。BCD 値とビットマップを持つメッセージ タイプの最初の 2 バイトはすべてゼロです。
問題は、開梱をテストするときです。使用:
fdISO8583 = new FDISO8583();
int pos = fdISO8583.Unpack(testMsg, 0);
結果のメッセージ タイプの値はゼロになります。
これがクラスを定義した方法の問題なのか、ISO8583 コードのバグなのかを理解する助けが必要です。