Question

J'ai un problème Tring d'écrire dans un fichier binaire.

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

Le problème est qu'il écrit dans le fichier de manière incorrecte. La plupart du temps il écrit des informations correctement, mais une fois qu'il dépasse 127 il écrit 63 (3Fthe mauvaise représentation) jusqu'à 255.

Il répète cette erreur jusqu'à ce que 512.

Qu'est-ce que le virus pourrait être?

Était-ce utile?

La solution

C'est parce que vous encodez avec ASCII, qui est de 7 bits, il coupera le 8 bit et mis à 0.

Pourquoi faites-vous de cette façon? Je suis en train d'obtenir ma tête autour de ce que vous faites là.

Pourquoi vous écrivez simplement pas le tableau d'octets au lieu de vous encoder?

En d'autres termes, pourquoi utilisez-vous pas ce code?

//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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top