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);
上述代碼將當前日期時間格式化爲長整型值,並將其傳遞給將其轉換爲壓縮十進制格式的方法。我知道上面的工作,因爲當我通過代碼的時候,字節數組對我所期望的所有字節都有正確的十六進制值。StringBuilder附加字節,無格式
但是,以上是我遇到的代碼,具體而言,我研究並發現字符串生成器.Append(byte)
實際上爲該字節執行ToString()
。在將字節添加到字符串時,它正在改變字節的值。問題是如何告訴StringBuilder
將「字節」保持原樣並將其存儲在內存中,而不格式化/更改值。我知道還有一個.AppendFormat()
有幾個重載使用IFormatProvider
給如何格式化的東西很多很多選項,但我沒有看到任何方式告訴它不格式/改變/改變的價值數據。
'問題是如何告訴StringBuilder將'byte'作爲原樣並將其存儲在內存中,而無需格式化/更改值。'嗯,你不能真的因爲一個StringBuilder代表一個可變的字符序列,但**一個字節不是一個字符**。如果知道編碼(推測爲ASCII),則可以將字節轉換爲字符。 –