質問

私は、バイナリファイルに書き込むトリング問題を抱えています。

//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まで633Fthe間違った表現)を書き込み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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top