字节数组如何相加????

时间:2023-01-12 07:25:09
如:
byte[] temp1 = new [100];
byte[] temp2 = new [50];
,,,,,,,
初始化后!!
如何相加起来变成一个字节数组???
byte[] temp3是temp1+temp2?????????

8 个解决方案

#1


笨法子:
byte[] temp1 = new byte[100];
byte[] temp2 = new byte[50];
,,,,,,,
byte[] bt = new byte[temp1.Length + temp2.Length];
Buffer.BlockCopy(temp1, 0, bt, 0, temp1.Length);
Buffer.BlockCopy(temp2, 0, bt, temp1.Length, temp2.Length);

#2


先赋到String中,加起来,再回到Byte[]

#3


byte[] temp1 = new byte [100];
byte[] temp2 = new byte [50];
byte[] temp3 = new byte[150];

Array.Copy(temp1,temp3, temp1.Length);
Array.Copy(temp2,0,temp3,temp1.Length,temp2.Length);

#4


如果从速度考虑,Buffer是最好的,它直接对地址进行操作。

#5


5555555
楼上各位好心人们!
问题我这字节是通过流读取的呀!
在循环里呀!
while(,,,)
{
    br.Read(buffer,.....);
}
现在的问题是我要把buffer里的这些字节数组给加起来!然后写入数据库!5555麻烦呀!

#6


当然可以直接把所有的字节流一起读完赋给一个byte[],
可在页面下载期间我还得设置进度条的值呀!
一口气读完所有字节的话。进度条的值就不知道如何设置了呀!:(

#7


用这个方法也可以解决呀,只是很慢。

你也可以考虑把buffer建得足够大(br的长度),一次读完。
buffer = new byte[br.BaseStream.Length];
br.Read(buffer, 0, buffer.Length);

也可以用ArrayList来解决。
ArrayList list = new ArrayList(1024);
while (...){
   br.Read(buffer...);
   list.AddRange(buffer);//buffer所有的数据都会存到ArrayList。
}
byte[] res = (byte[]) list.ToArray(typeof(byte));

还可以用StringBuilder。
StringBuilder sb = new StringBuilder(1024);
System.Text.Encoding unicode = System.Text.Encoding.Unicode;
while(...){
  br.Read(buffer...);
  sb.Append(unicode.GetString(buffer...));//可以定义数目,也可以整个buffer。
}
byte[] res = unicode.GetBytes(sb.ToString());

#8


还可以用StringBuilder。
StringBuilder sb = new StringBuilder(1024);
System.Text.Encoding unicode = System.Text.Encoding.Unicode;
while(...){
  br.Read(buffer...);
  sb.Append(unicode.GetString(buffer...));//可以定义数目,也可以整个buffer。
}
byte[] res = unicode.GetBytes(sb.ToString());
谢谢!我就用的这个解决的:)
谢谢楼上

#1


笨法子:
byte[] temp1 = new byte[100];
byte[] temp2 = new byte[50];
,,,,,,,
byte[] bt = new byte[temp1.Length + temp2.Length];
Buffer.BlockCopy(temp1, 0, bt, 0, temp1.Length);
Buffer.BlockCopy(temp2, 0, bt, temp1.Length, temp2.Length);

#2


先赋到String中,加起来,再回到Byte[]

#3


byte[] temp1 = new byte [100];
byte[] temp2 = new byte [50];
byte[] temp3 = new byte[150];

Array.Copy(temp1,temp3, temp1.Length);
Array.Copy(temp2,0,temp3,temp1.Length,temp2.Length);

#4


如果从速度考虑,Buffer是最好的,它直接对地址进行操作。

#5


5555555
楼上各位好心人们!
问题我这字节是通过流读取的呀!
在循环里呀!
while(,,,)
{
    br.Read(buffer,.....);
}
现在的问题是我要把buffer里的这些字节数组给加起来!然后写入数据库!5555麻烦呀!

#6


当然可以直接把所有的字节流一起读完赋给一个byte[],
可在页面下载期间我还得设置进度条的值呀!
一口气读完所有字节的话。进度条的值就不知道如何设置了呀!:(

#7


用这个方法也可以解决呀,只是很慢。

你也可以考虑把buffer建得足够大(br的长度),一次读完。
buffer = new byte[br.BaseStream.Length];
br.Read(buffer, 0, buffer.Length);

也可以用ArrayList来解决。
ArrayList list = new ArrayList(1024);
while (...){
   br.Read(buffer...);
   list.AddRange(buffer);//buffer所有的数据都会存到ArrayList。
}
byte[] res = (byte[]) list.ToArray(typeof(byte));

还可以用StringBuilder。
StringBuilder sb = new StringBuilder(1024);
System.Text.Encoding unicode = System.Text.Encoding.Unicode;
while(...){
  br.Read(buffer...);
  sb.Append(unicode.GetString(buffer...));//可以定义数目,也可以整个buffer。
}
byte[] res = unicode.GetBytes(sb.ToString());

#8


还可以用StringBuilder。
StringBuilder sb = new StringBuilder(1024);
System.Text.Encoding unicode = System.Text.Encoding.Unicode;
while(...){
  br.Read(buffer...);
  sb.Append(unicode.GetString(buffer...));//可以定义数目,也可以整个buffer。
}
byte[] res = unicode.GetBytes(sb.ToString());
谢谢!我就用的这个解决的:)
谢谢楼上