c# int到char在流写入器中的转换

本文关键字:转换 int char | 更新日期: 2023-09-27 18:16:39

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

从…:

  1. 我有字符串[,,]数组与十六进制值(完全保存-例如值1A被保存为"1A")
  2. 我将每个单元格转换为int值
  3. 将int值转换为char
  4. 使用StreamWriter
  5. 保存字符到文件

代码:

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,经过十六进制转换后,它正好是FE,但在输出文件中它的值是错误的。

这个问题有什么解决办法吗?

c# int到char在流写入器中的转换

使用FileStream:

FileStream binaryWriter = new FileStream(this.outputFilePath, FileMode.Create,FileAccess.ReadWrite);
//some code here
binaryWriter.WriteByte(0xFE);
//some code here
binaryWriter.Close();

您的流写入器使用UTF-8持久化该字符。它将为您的单个字符写入两个字节。

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