从File.ReadAllBytes中拆分结果

时间:2012-05-13 20:00:47

标签: c# arrays

我的代码在这里读取图像的所有字节并将其存储在字节数组中。有没有办法将这些字节转换为ascii然后将它们拆分为512-char(ascii char)长片?就像你尝试根据长度分割字符串一样,你可以这样做。你能做类似的事情将它分成512个长度吗?这是发送到服务器。

byte[] imagesize; 
imagesize = File.ReadAllBytes(@"C:\image.jpeg");
Console.Write(imagesize[1].ToString());

真正想要的是将这些字节转换为纯ASCII格式(在C#中将是Encoding.ASCII),然后将该长ASCII行拆分为将所有字节转换为512-char( ?)长块到字节数组(byte []块)。所以当我发送数据包时,我可以做到

 for(i=0; i<AmountOfChunks; i++)
 {
      Packet.payload = chunks[i];
      //The "chunks" is the ASCII formated array.
 }

如果有人知道如何做到这一点,那将会有很大帮助。谢谢,如果有更多的话,我会尝试更详细地解释它,如果可以的话。 如果这是错误的,因为我知道每个字节是8位。然后以某种方式能够做到这一点,也许将字节放入列表中?

2 个答案:

答案 0 :(得分:2)

不清楚为什么你需要这个,但你可能正在寻找Convert.ToBase64String()来获取字符串表示。对于分块,您可以遍历结果字符串并在适当的索引处分割:

byte[] imagesize = File.ReadAllBytes(@"C:\image.jpeg");
string base64String = Convert.ToBase64String(imagesize);

List<string> chunks = new List<string>();
for (int i = 0; i < base64String.Length; i+=512)
{
    chunks.Add(base64String.Substring(i, Math.Min(512, base64String.Length - i)));
}

答案 1 :(得分:0)

尝试制作此

int i=0;  
do
{
     sendBytes = imagesize.Skip(512*i).Take(512).ToArray();
     //Your function of send
     i++;
}
while(imagesize.Count()-512*i>0)