簡體   English   中英

將字節數組轉換為分隔的字符串

[英]Converting a Byte Array into a delimited string

我試圖將字節數組轉換為逗號字符串分隔。 我只想將de bytes的值轉換為字符串,以便我通過TCP將字符串發送到另一台PC。

這是我現在運行的代碼,它正在工作,但它太慢了(字節數組有50000個元素)。 你有更好的主意嗎?

謝謝。

byte[] bytes = (byte[])dt.Rows[0]["LNL_BLOB"];
string foto="";

foreach (byte b in bytes)
{
   foto = foto + "," + b.ToString();
}

您可以使用Convert.ToBase64String而不是自己迭代字節。

byte[] data = // whatever you do to get the bytes
string sData = Convert.ToBase64String(data);

是方法文檔。

如果要從字符串中返回字節數組,只需使用Convert.FromBase64String ala

byte[] imageData = Convert.FromBase64String(sData);

好吧,你要分配100000個字符串(一半來自ToString()調用,一半來自中間字符串)。 您是否從未聽說過字符串連接的危險以及StringBuilder的目的?

例如

byte[] bytes = (byte[])dt.Rows[0]["LNL_BLOB"];
System.Text.StringBuilder foto=new System.Text.StringBuilder();

foreach (byte b in bytes)
{
   foto.AppendFormat(",{0}",b);
}
return foto.ToString(); /* Or however you're using your string now */

在執行大量字符串操作時使用StringBuilder 在這種特殊情況下,您還可以使用string.Join:

string foto = string.Join(",", bytes);

使用StringBuilder它對字符串的連接更有效。

byte[] bytes = (byte[])dt.Rows[0]["LNL_BLOB"];
StringBuilder foto = new StringBuilder();

for(int i = 0; i < bytes.Length; i++) {
  foto.Append(bytes[i].ToString());

  if (i != (bytes.Length - 1)) foto.Append(",");
}

您可以並行化循環並並行處理陣列的不同區域並重新組合結果。 而且,正如其他人所提到的,使用StringBuilder。

暫無
暫無

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

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