[英]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.