我遇到了下一个问题。 我有一个二进制文件,我写入系统的重要数据。 其中一个字段是时间,我使用DateTime.Now.ToString(“HHmmssffffff”),格式为微秒。这个数据(在字符串中)我转换(ToCahrArray)(并在调试中检查它很好),它包括有效时间直到微秒。 然后我写它并将其刷新到文件。当用PsPad打开它将二进制文件转换为Ascii时,我看到数据在这个字段中被破坏了,而另一个数据则被破坏了,但消息的其余部分都很好。
代码:
void Write(string strData) {
char[] cD = strData.ToCharArry();
bw.Write(c); //br is from type of BinaryWriter
bw.Flush();
}
答案 0 :(得分:5)
你用Unicode字符写出字节,而不是Ascii字节。如果您想要Ascii字节,则应将其更改为使用Encoding类。
byte[] data = Encoding.ASCII.GetBytes(strData);
bw.Write(data);
我强烈建议您阅读Joel Spolsky's article on character sets and encoding。它可以帮助您了解当前代码无法正常工作。