2009-08-24 6 views
0

У меня возникла следующая проблема. У меня есть двоичный файл, который я пишу ему жизненно важные данные системы. Одно из полей - это время, в котором я использую DateTime.Now.ToString («HHmmssffffff») в формате микросекунд. Эти данные (в строке) конвертируются (в ToCahrArray) (и проверены в процессе отладки в порядке) , он состоит из времени, действительного до микросекунд. Затем я пишу его и выворачиваю в файл. Открыв его с помощью PsPad, который переводит двоичный код в Ascii, я вижу, что данные повреждены в этом поле, а еще один, а остальные сообщение отличноВремя печати двоичного файла в C# .net

код:..

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. Это может помочь вам понять, что ваш текущий код работает неправильно.

+0

+1 для ссылки на статью Джоэла - это должно быть обязательно чтение! – JMarsch

Смежные вопросы