C#,写二进制数据

时间:2009-10-31 20:47:15

标签: c# binary-data

我有一个问题要写入二进制文件。

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

这可能是什么错误?

1 个答案:

答案 0 :(得分:4)

这是因为你用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();