簡體   English   中英

將字節轉換為字符串C#

[英]converting bytes to a string C#

我想將二進制文件轉換為字符串,然后可以將其轉換回二進制文件。 我試過這個:

byte[] byteArray = File.ReadAllBytes(@"D:\pic.png");
for (int i = 0; i < byteArray.Length; i++)
{
    textBox1.Text += (char)byteArray[i];
}

但它太慢了,在i5 CPU上轉換5KB大約需要20秒。 我注意到記事本在更短的時間內完成了相同的工作。 關於如何做的任何想法?

謝謝

如果您希望能夠在不丟失任何信息的情況下轉換回二進制文件,那么您根本不應該做這類事情 - 您應該使用base64編碼或類似的東西:

textBox1.Text = Convert.ToBase64String(byteArray);

然后你可以使用byte[] data = Convert.FromBase64String(text);轉換回來byte[] data = Convert.FromBase64String(text); 重要的是base64將任意二進制數據轉換為已知的ASCII文本; 所有字節序列都是有效的,所有字節序列都可以是往返的,因為它只需要ASCII,它對許多傳輸都很友好。

這里有四件重要的事情要點:

  • 不要將任意二進制數據視為特定編碼中的有效文本。 Phil Haack 最近在一篇博客文章中寫到了這一點 ,以回應我的一些SO答案。
  • 不要在循環中執行字符串連接 ; 如果你想用很多位創建一個最終的字符串,並且你事先不知道多少位,請使用StringBuilder
  • 不要在循環中不必要地使用UI屬性 - 即使前面的步驟沒問題,最好用循環構造字符串然后對Text屬性進行單個賦值
  • 了解System.Text.Encoding ,了解您真正編碼文本的情況; 如果這是UTF-8編碼的數據, 那么 Encoding.UTF8.GetString(byteArray)就是合適的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM