Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив байт, очистить от пустых значений 
V
    Опции темы
Machaon
  Дата 3.4.2012, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Имеется массив байт
Код

public byte[] dataBuffer = new byte[1024];

Так вот этот массив заполняется из буфера сокета но если буфер сокета меньше чем размер массива то все остальное место заполняется пустыми байтами.

Вопрос каким методом можно организовать заполнение так чтобы пустые байты не записывались в массив.
PM MAIL ICQ Skype   Вверх
VirusUZ
  Дата 3.4.2012, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 9.4.2010
Где: Узбекистан, Навои й обл.

Репутация: -1
Всего: -2



Код

using System;
using System.IO;
namespace conf.App_Code.Utils {
    [Serializable]
    public class Binary : MarshalByRefObject, IBinary {
        public byte[] ReadFile(string filePath) {
            try {
                string temp =  filePath;
                return File.ReadAllBytes(temp);
            } catch { return null; }
        }
        public void Write(string filePath, byte[] b) {
            string cp = filePath;
            new FileInfo(cp).Directory.Create();
            try {
                File.WriteAllBytes(cp, b);
            } catch {
                File.Delete(cp);
                File.WriteAllBytes(cp, b);
            }
        }
        public byte[] ReadSuper(string filePath) {
            try {
                return File.ReadAllBytes(filePath);
            } catch { return null; }
        }
        public FileStream StreamSuper(string path) {
            return new FileStream(path, FileMode.Open);
        }
        public string ReadText(string path) {
            return File.ReadAllText(path);
        }
        public void CreateFolder(string path) {
            Directory.CreateDirectory(path);
        }
        public string GetDirectory(string path) {
            return Directory.GetParent(path).FullName;
        }
    }
}

--------------------
Virus
PM MAIL   Вверх
Machaon
Дата 3.4.2012, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Здесь как я понимаю чтение идет из файла  и запись также идет в файл но никакой обработки на пустые байты я ну никак ни магу разглядеть 
PM MAIL ICQ Skype   Вверх
Machaon
Дата 3.4.2012, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Проще говоря мне нужно понять как массив размером к примеру 1000байт
Код

public byte[] primermassiva = new byte[1000];

заполнить текстом чтобы в массиве хранилось только нужные мне данные к примеру:

в массив из 1000байт записываем текст преобразованный в байты допустим слово "винград" (слово винград в массиве будет находиться в байтах но я оставлю для наглядности его в стринговом значении)

Соответственно слово "винград" займет к примеру 14байт и в массиве из 1000 байтов будет выглядеть так:

винград0000000000000000000000000000000000000........


Мне же нужно оставить в массиве только те байты которые не пустые то есть чтобы в массиве хранились только байты стрингового значения а именно:

винград

Replace и всякие другие способы я пробовал работает но мне нужно знать как наиболее правильно подойти к этому вопросу чтобы в подобных ситуациях с ним больше не сталкиваться и получить наиболее рационально решение чем писать целую функцию когда можно обойтись одной строчкой.


PM MAIL ICQ Skype   Вверх
golfV
Дата 4.4.2012, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



Код

 var data = new byte[] { 0x01, 0x02, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 var new_data = data.TakeWhile((v, index) => data.Skip(index).Any(w => w != 0x00)).ToArray();

PM MAIL   Вверх
erm0l0v
Дата 4.4.2012, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



Да как написал golfV избавиться от пустых байт можно только создав массив из 14 байт. По другому никак в этом и суть массивов, если создали массив из 1000 байт то он и в памяти будет занимать место для 1000 байт)))
PM MAIL   Вверх
Machaon
Дата 4.4.2012, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Спасибо все работает но не могли бы вы мне объяснить вот эту строчку поподробнее:
Код

var new_data = data.TakeWhile((v, index) => data.Skip(index).Any(w => w != 0x00)).ToArray();

PM MAIL ICQ Skype   Вверх
Machaon
Дата 5.4.2012, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Вопрос решен ответ был найден тут.

Это сообщение отредактировал(а) Machaon - 5.4.2012, 01:53
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0714 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.