1

我的代码在这里读取图像的所有字节并将其存储在字节数组中。有没有办法将这些字节转换为 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(?) 长块拆分为字节数组(字节[] 块)。所以当我发送数据包时,我可以做

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

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

4

2 回答 2

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)));
}
于 2012-05-13T20:09:11.833 回答
0

试着做这个

int i=0;  
do
{
     sendBytes = imagesize.Skip(512*i).Take(512).ToArray();
     //Your function of send
     i++;
}
while(imagesize.Count()-512*i>0)
于 2012-05-13T20:51:52.083 回答