我有一个问题要写入二进制文件。
//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
。
这可能是什么错误?
答案 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();