我的代码在这里读取图像的所有字节并将其存储在字节数组中。有没有办法将这些字节转换为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位。然后以某种方式能够做到这一点,也许将字节放入列表中?
答案 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)