2012-05-13 3 views
1

Здесь мой код читает все байты изображения и сохраняет его в массиве байтов. Есть ли способ преобразовать эти байты в ascii, а затем разделить их на 512-char (ascii char) длинные фрагменты? Например, когда вы пытаетесь разделить строку на основе длины, вы можете это сделать. Можете ли вы сделать что-то подобное разбиению на 512 длин? Это нужно отправить на сервер.Сплит результат из File.ReadAllBytes

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. 
} 

Если кто-то знает, как это сделать, это очень поможет. Спасибо, если что-то еще, я попытаюсь объяснить это более подробно, если смогу. Если это не так, потому что я знаю, что байт по 8 бит. Тогда как-нибудь, чтобы это сделать, возможно, байты в список?

+0

Почему вы не просто читать его на куски тогда? – harold

+0

Эти комментарии на самом деле ничего не объясняют, я боюсь, не могли бы вы обновить свой вопрос с подробной информацией о том, что именно вам нужно отправить на сервер? – harold

+0

@harold Отредактировано. – Nom

ответ

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))); 
} 
+0

Мне нужно это, чтобы отправить пакет на сервер, максимальная длина которого составляет 512 символов, поэтому для отправки целого изображения на сервер его нужно разделить на 512 кусков, а затем отправить один за другим. Поэтому мне нужно было найти способ разделить readallbytes. Благодаря! – Nom

+0

@Nom: сервер принимает только строки ASCII? – BrokenGlass

+0

Да, поэтому мне также нужно преобразовать его в ASCII, который я могу попытаться сделать, но если вы знаете правильный код, чтобы сделать это, это может быть большой помощью. – Nom

0

Попробуйте сделать это

int i=0; 
do 
{ 
    sendBytes = imagesize.Skip(512*i).Take(512).ToArray(); 
    //Your function of send 
    i++; 
} 
while(imagesize.Count()-512*i>0) 
Смежные вопросы