0

何らかの方法で配列から文字列値を変換し (以下で説明)、文字をファイルに保存したいと考えています。

... から: への変換:

  1. 16 進数値の string[,,] 配列があります (正確に保存されます。たとえば、値 1A は「1A」として保存されます)。
  2. 各セルを int 値に変換します
  3. int 値を char に変換する
  4. を使用してキャラクターをファイルに保存するStreamWriter

コード:

StreamWriter streamWriter = new StreamWriter(this.outputFilePath);

for (int i = 0; i < this.workingArray.GetLength(0); i++)
{
    for (int j = 0; j < this.workingArray.GetLength(1); j++)
    {
        for (int k = 0; k < this.workingArray.GetLength(2); k++)
        {
            int value = int.Parse(this.workingArray[i, j, k], System.Globalization.NumberStyles.HexNumber);
            char symbol = Convert.ToChar(value);

            streamWriter.Write(symbol);
        }
    }
}
streamWriter.Close();

問題は、workingArrayセルの値が FE の場合、ファイルに値 CE を取得することです。なぜ間違った方法で値を保存するのかわかりません。また、シンボルコードは 254 で、16 進数に変換すると正確には FE ですが、出力ファイルでは値が間違っています。

この問題の解決策はありますか?

4

2 に答える 2

3

FileStream を使用するだけです。

FileStream binaryWriter = new FileStream(this.outputFilePath, FileMode.Create,FileAccess.ReadWrite);
//some code here
binaryWriter.WriteByte(0xFE);
//some code here
binaryWriter.Close();
于 2013-06-03T11:31:41.877 に答える
1

ストリーム ライターは、UTF-8 を使用して文字を保持しています。1 つの文字に対して 2 バイトが書き込まれます。

これを変更するStreamWriterには、別のエンコーディングを使用するように に指示する必要があります。

于 2013-06-03T11:25:59.230 に答える