从 File.ReadAllBytes 拆分结果

本文关键字:结果 拆分 ReadAllBytes File | 更新日期: 2023-09-27 18:34:06

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

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

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

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

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

从 File.ReadAllBytes 拆分结果

不清楚为什么需要这个,但你可能正在寻找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)));
}

尝试这样做

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