我想将二进制文件转换为字符串,然后可以将其转换回二进制文件。 我试过这个:
byte[] byteArray = File.ReadAllBytes(@"D:\pic.png");
for (int i = 0; i < byteArray.Length; i++)
{
textBox1.Text += (char)byteArray[i];
}
但速度太慢,在i5 CPU上转换5KB大约需要20秒。 我注意到记事本在更短的时间内完成了相同的工作。 关于如何做的任何想法?
由于
答案 0 :(得分:16)
如果您希望能够在不丢失任何信息的情况下转换回二进制文件,那么您根本不应该做这类事情 - 您应该使用base64编码或类似的东西:
textBox1.Text = Convert.ToBase64String(byteArray);
然后您可以使用byte[] data = Convert.FromBase64String(text);
转换回来。重要的是base64将任意二进制数据转换为已知的ASCII文本;所有字节序列都有效,所有字节序列都可以往返,因为它只需要ASCII,它对许多传输都很友好。
这里有四个重要的事情:
StringBuilder
System.Text.Encoding
您真正拥有编码文字的情况; Text
本来是合适的如果这是UTF-8编码的数据,例如