1

我在写入二进制文件时遇到问题。

//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它就会写入633F错误的表示)直到255.

然后它重复这个错误,直到512

错误可能是什么?

4

1 回答 1

4

那是因为您使用 7 位 ASCII 对其进行编码,它将切断第 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();
于 2009-10-31T20:53:16.717 回答