Вопрос

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

//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.

В чем может быть ошибка?

Это было полезно?

Решение

Это связано с тем, что вы кодируете его с помощью 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top