Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200

Работа с бинарными байтами

23.04.2017, 02:03. Показов 3744. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно организовать чтение бинарных байтов (типу 01011101 кто не знал) из большого файла и запись их в другой
Вот как я перевожу строку
C#
1
2
3
4
5
6
7
private static string stringToBinary(string data)
{
    string tData = String.Empty;
    var a = data.ToCharArray().Select(i => Convert.ToString(i, 2));
    foreach (var ch in a) tData += ch;
    return Compression(tData);
}
А вот с файлами проблема. В 16-ом формате не проблема, но нужно в бинарном
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2017, 02:03
Ответы с готовыми решениями:

Работа с байтами
Здравствуйте! Решил сделать никому не нужную и бесполезную программу, суть которой - хранение информации в виде изображения. Каждый...

Работа с UTF байтами
Здравствуйте! Я сейчас переписываю небольшую утилитиу с AS3 на C# с которым дел имел не особо много =) Суть в работе с сетью по своему...

Работа с бинарными файлами
Всем привет, дали задание Дано целое число K и файл, содержащий неотрицательные целые числа. Вывести K-й элемент файла (элементы...

28
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
23.04.2017, 02:20
Неправильно вы читаете. Вы работаете со строками, а не с бинарными данными. По-хорошему, метод Compression на вход должен получать массив байт, а не строку из нулей и единиц.

Добавлено через 5 минут
Для получения байт строки используется, например, Encoding.UTF8.GetBytes,
для чтения бинарных данных используется либо BinaryReader, либо другие подходящие методы из System.IO.
2
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 02:27  [ТС]
IamRain, ноу ви меня не поняли мне из файла нужно получать бинарний масив данних и передать его на обработку в друюю функцию там полюбому вийдут блоки желательно по 8 bit
А Compression должна получать массив строк из нулей и едениц
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
23.04.2017, 02:37
Цитата Сообщение от LyciferAnZ Посмотреть сообщение
нужно получать бинарний масив данних
Это вы не поняли задание. Под бинарными данные всегда понимаются сырые данные (raw data), то есть всего навсего массив байтов, без каких-либо лишних трансформаций. И эти байты вы должны сжать в вашем методе Compression. Я так понимаю на выходе должен получиться другой массив байтов, уже меньшего размера.
Бинарные данные и строки с нулями и единицами - совершенно разные вещи.
0
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 03:03  [ТС]
IamRain, значить ошибочка вийшла то можете обяснить как считивать и записивать нули и еденици?
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
23.04.2017, 03:14
Думаю, вот так
C#
1
2
3
4
5
6
7
private static byte[] StringToBinary(string str, Encoding encoding = null)
        {
            if (str == null) throw new ArgumentNullException(nameof(str));
            if (encoding == null)
                return Encoding.UTF8.GetBytes(str);
            return encoding.GetBytes(str);
        }
Добавлено через 1 минуту
Результат уже передаете методу Compression. Как работать с файлами - смотрите выше.
2
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 13:18  [ТС]
IamRain, Ет не совсем то мне для файлов надо, ее прийдется наверно считивать как умею в 16 потом переводить в двуичную
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 13:36
LyciferAnZ, вот как можно прочитать "бинарные байты" из большого файла
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using (var fstream = File.OpenRead(@"c:\dir\file"))
{
    const int BUF_SIZE = 50*1024;
    byte[] buf = new byte[BUF_SIZE];
    for(;;)
    {
        int bytesRead = fstream.Read(buf, 0, BUF_SIZE);
        if (bytesRead == 0) break;
 
        // Обработка данных в массиве buf в диапазаоне [0..bytesRead)
        // ...
    }
}
1
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 13:41  [ТС]
OwenGlendower, оо спасибо, а как записивать их?

Добавлено через 44 секунды
Ну типа есть у мя байти 010101010.... нужно их записать в файл
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 14:20
LyciferAnZ, используй метод Write класса FileStream. Пример приводить не буду. Разберись самостоятельно.
2
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 17:09  [ТС]
OwenGlendower, а по стандарту то такое я знаю
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 17:12
LyciferAnZ, по какому стандарту? Ты о чем?
0
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 22:10  [ТС]
OwenGlendower,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using (var fileIn = File.Open(path, FileMode.Open, FileAccess.Read))
{
    var buff = new byte[8];
    StringBuilder hex = new StringBuilder(buff.Length * 2);
    while (true)
    {
        int bytesRead = fileIn.Read(buff, 0, buff.Length);
        if (bytesRead == 0) break;
        hex.Length = 0;
        for (int i = 0; i < bytesRead; i++) hex.AppendFormat("{0:x2}", buff[i]);
        zi++;
    }
}
ТИПУ ТАКОГО ну всеравно есть проблемси с записью 0101010 (- байти в таком формате) в файл

Добавлено через 52 минуты
OwenGlendower, Наверно воспользуюсь таблицой Тетрад чтоби перевести 010101001... в 16 систему и буду так записивать
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 22:23
Цитата Сообщение от LyciferAnZ Посмотреть сообщение
всеравно есть проблемси с записью 0101010
байты или строковое представление байтов?
0
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 22:54  [ТС]
OwenGlendower, ну я считую блоки по 8 байт етих 10101000100101... потом когда их обаботаю виходят другие 01010010001... и их нужно записать но они уже как строка большая может по частях както

Добавлено через 31 секунду
хотя ето глупо если файл будет гигабайт то в 1 строку ето очень глупо записивать наверно
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 22:59
Цитата Сообщение от LyciferAnZ Посмотреть сообщение
хотя ето глупо если файл будет гигабайт то в 1 строку ето очень глупо записивать наверно
Еще как глупо. Последуй совету IamRain и работай с байтами.
0
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 23:06  [ТС]
OwenGlendower, Ну а Compression как раз должен все обработать ( может брать блоки по 64 байта ?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 23:11
Цитата Сообщение от LyciferAnZ Посмотреть сообщение
может брать блоки по 64 байта ?
Лучше по 42.
1
 Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
23.04.2017, 23:14  [ТС]
OwenGlendower, а потом же можно будет склеивать блоки? только надо будет ключ но ето не проблема моя функция видает ет все
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
23.04.2017, 23:20
Цитата Сообщение от LyciferAnZ Посмотреть сообщение
а потом же можно будет склеивать блоки?
Можно

Добавлено через 3 минуты
Еще можно прочитать N байтов из файла, обработать их и сразу записать на диск. Тогда никакой склейки не понадобится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2017, 23:20
Помогаю со студенческими работами здесь

Работа с байтами =)
Мне вот надо реализовать такую штуку: в листбоксе список файлов, нужно их вписать в один файл так: 1ые 4 байта: paul кол-во файлов. ...

Работа с байтами
Добрый вечер.подскажите пожалуйста самый рациональный способ перевода двух байтов. например у меня есть &quot;с0 9e&quot;. Нужно получить...

Работа с байтами в С++
В каком виде лучше работать с байтами? В виде целочисленных типов , либо возможно unsigned char ? В С++ есть такая интересная штука как...

Работа с файлами и байтами C++
Доброго времени суток! Прошу помощи з данным заданием: -Пользователь задает имя файла. Если имя задано некорректно, выдать ...

Работа с байтами клавиатуры
Проверить нажата ли клавиша CTRL, если нажата то вычислить А=(0,25+х^2)/(x+1), иначе A=131h. X=2. Помогите пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru