質問
私は、バイナリファイルに書き込むトリング問題を抱えています。
//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
the間違った表現)を書き込み255
上回るたら。
これは、その後、512
までこのエラーを繰り返します。
バグは何ができるか?
解決
それはあなたが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();
所属していません StackOverflow