Аватар для LyciferAnZ
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200

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

23.04.2017, 02:03. Показов 3797. Ответов 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,234
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,234
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,234
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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18309 / 14233 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru