Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
streamwriter中的C#int到char转换_C#_Hex - Fatal编程技术网

streamwriter中的C#int到char转换

streamwriter中的C#int到char转换,c#,hex,C#,Hex,我想以某种方式(如下所述)转换数组中的字符串值,并将字符保存到文件中 从…转换为。。。致: 我有十六进制值的字符串[,,]数组(精确保存-例如值1A保存为“1A”) 我将每个单元格转换为int值 将int值转换为char 使用StreamWriter 守则: StreamWriter streamWriter = new StreamWriter(this.outputFilePath); for (int i = 0; i < this.workingArray.GetLength(0

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

从…转换为。。。致:

  • 我有十六进制值的字符串[,,]数组(精确保存-例如值1A保存为“1A”)
  • 我将每个单元格转换为int值
  • 将int值转换为char
  • 使用
    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();
    
    StreamWriter StreamWriter=新的StreamWriter(this.outputFilePath);
    for(inti=0;i
    问题是,当我的
    workingArray
    单元格值为FE时,我在文件中获得值CE。我不知道为什么它以错误的方式保存值。此外,符号代码是254,在十六进制转换后它正好是FE,但在输出文件中它的值是错误的


    这个问题有什么解决方案吗?

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


    要更改此设置,您需要指示流编写器使用不同的编码。

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

    要更改此设置,您需要指示StreamWriter使用不同的编码。

    只需使用FileStream:

    FileStream binaryWriter = new FileStream(this.outputFilePath, FileMode.Create,FileAccess.ReadWrite);
    //some code here
    binaryWriter.WriteByte(0xFE);
    //some code here
    binaryWriter.Close();
    
    只需使用文件流:

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

    所有的编码都不起作用。我尝试ASCII、默认、UTF7、UTF8、UTF32、Unicode。它们对我不起作用:/@Fka:如果你实际上不关心字符,而只关心字节,请参阅Semen Miroshnichenko的回答。所有编码都不起作用。我尝试ASCII、默认、UTF7、UTF8、UTF32、Unicode。它们对我不起作用:/@Fka:如果你实际上不关心字符,而只关心字节,请参阅Semen Miroshnichenko的答案。