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);
Run Code Online (Sandbox Code Playgroud)
上面的代码获取当前日期时间,将其格式化为long值并将其传递给将其转换为压缩十进制格式的方法.我知道上面的工作是因为当我逐步执行代码时,字节数组对于我期望的所有字节都具有正确的十六进制值.
但是上面是我遇到问题的代码,特别是我已经研究过,发现字符串生成器.Append(byte)实际上ToString()为该字节做了一个.当它将字节添加到字符串时,这会改变字节的值.问题是我如何告诉StringBuilder它按原样取出'byte'并将其存储在内存中而不格式化/改变值.我知道还有一个.AppendFormat()有几个重载使用它IFormatProvider来提供很多很多关于如何格式化的选项,但是我没有看到任何方法告诉它不格式化/改变/改变数据的值.