0

我想以某种方式从数组转换字符串值(如下所述)并将字符保存到文件中。

从 ... 转换为:

  1. 我有十六进制值的字符串 [,,] 数组(完全保存 - 例如值 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 保存字符。它将为您的单个字符写入两个字节。

要更改这一点,您需要指示StreamWriter使用不同的编码。

于 2013-06-03T11:25:59.230 回答