C #, запись двоичных данных - PullRequest
1 голос
/ 31 октября 2009

У меня проблема с записью в двоичный файл.

//This is preparing the counter as binary
int nCounterIn = ...;
int nCounterTotalInNetwork = System.Net.IPAddress.HostToNetworkOrder(nCounterIn);
byte[] byteFormat = BitConverter.GetBytes(nCounterTotalInNetwork);
char[] charFormat = System.Text.ASCIIEncoding.ASCII.GetChars(byteFormat);
string strArrResults = new string(charFormat);

//This is how writing it to a file using a BinaryWriter object

m_brWriter.Write(strArrResults.ToCharArray());
m_brWriter.Flush();

Проблема в том, что он пишет в файл неправильно. Большую часть времени он пишет информацию правильно, но как только он превосходит 127, он пишет 63 (3F неправильное представление) до 255.

Затем эта ошибка повторяется до 512.

Что может быть за ошибка?

1 Ответ

4 голосов
/ 31 октября 2009

Это потому, что вы кодируете его с помощью ASCII, который является 7-битным, он обрезает 8-й бит и устанавливает его в 0.

Почему ты так делаешь? Я пытаюсь понять, что ты там делаешь.

Почему вы не просто пишете полученный байтовый массив вместо его кодирования?

Другими словами, почему вы не используете этот код?

//This is preparing the counter as binary
int nCounterIn = ...;
int nCounterTotalInNetwork = System.Net.IPAddress.HostToNetworkOrder(nCounterIn);
byte[] byteFormat = BitConverter.GetBytes(nCounterTotalInNetwork);
m_brWriter.Write(byteFormat);
m_brWriter.Flush();
...