C #, записывающий двоичные данные
-
11-09-2019 - |
Вопрос
У меня возникла проблема при попытке записи в двоичный файл.
//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();
Не связан с StackOverflow