1

ここのコードは、画像のすべてのバイトを読み取り、バイト配列に格納します。これらのバイトを ascii に変換してから、512 文字 (ascii char) の長さに分割する方法はありますか? 長さに基づいて文字列を分割しようとするときのように、それを行うことができます。これを 512 の長さに分割するようなことはできますか? これはサーバーに送信するためのものです。

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

私が本当に欲しいのは、これらのバイトをプレーン ASCII 形式 (C# では Encoding.ASCII) に変換し、その長い ASCII 行を分割して、すべてのバイトを 512 文字 (?) の長いチャンクに変換してバイト配列 (バイト) にすることです。 [] チャンク)。だから私ができるパケットを送るとき

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

誰かがこれを行う方法を知っていれば、それは大いに役立ちます。ありがとう、他に何かあれば、できる限り詳しく説明しようと思います。これが間違っている場合は、1 バイトがそれぞれ 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 に答える