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
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的答案。