DateTime todayDateTime = DateTime.Now;
StringBuilder todayDateTimeSB = new StringBuilder("0");
todayDateTimeSB.Append(todayDateTime.ToString("MMddyyyy"));
long todayDateTimeLongValue = Convert.ToInt64(todayDateTimeSB.ToString());
// convert to byte array packed decimal
byte[] packedDecValue = ToComp3UsingStrings(todayDateTimeLongValue);
// append each byte to the string builder
foreach (byte b in packedDecValue)
{
sb.Append(b); // bytes 56-60
}
sb.Append(' ', 37);
上記のコードは、現在の日時を取得し、それをlong値にフォーマットし、それをパック10進フォーマットに変換するメソッドに渡します。コードをステップ実行すると、バイト配列には、期待しているすべてのバイトに対して正しい16進値が含まれるため、上記が機能することはわかっています。
ただし、上記は私が問題を抱えているコードです。具体的には、文字列ビルダー.Append(byte)
が実際ToString()
にそのバイトに対してを実行することを調査して見つけました。これは、バイトを文字列に追加するときにバイトの値を変更します。問題はStringBuilder
、「バイト」をそのまま取得し、値をフォーマット/変更せずにメモリに保存するように指示する方法です。.AppendFormat()
を使用してフォーマット方法に関する多くのオプションを提供するいくつかのオーバーロードがあることも知っていIFormatProvider
ますが、データの値をフォーマット/変更/変更しないように指示する方法がわかりません。