Frage

Ich habe ein Problem in eine binäre Datei schreiben Tring.

//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();

Das Problem ist, dass es in die Datei falsch schreibt. Die meiste Zeit es Informationen korrekt schreibt, aber sobald es 127 übertrifft es schreibt 63 (3Fthe falsche Darstellung) bis 255.

Es wiederholt sich dann diesen Fehler bis 512.

Was ist der Fehler sein könnte?

War es hilfreich?

Lösung

Das ist, weil Sie es mit ASCII kodiert sind, die 7-Bit ist, wird es das 8. Bit abgeschnitten und auf 0 setzen.

Warum tun Sie es auf diese Weise? Ich versuche, meinen Kopf herum, was Sie da tun.

Warum sind Sie einfach nicht den Byte-Array zu schreiben von Ihnen erhalten, anstatt sie kodieren?

Mit anderen Worten, warum Sie nicht diesen Code verwenden?

//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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top