从 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 位的。然后以某种方式能够做到这一点,也许字节成一个列表?
不清楚为什么需要这个,但你可能正在寻找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)