Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
1

Чтение блока указанного количества бит

05.04.2013, 20:01. Показов 1983. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть файл, в нем например "qwerty", в бинарном виде: 100011101110111010100110010011100010111010011110
Мне нужно в цикле получать из него блоки например по 10 бит, то есть чтоб в массиве BitArray, в каждой итерации цикла оказывалось:
1000111011
1011101010
0110010011
1000101110
10011110

Пока что реализую не из файла, а из массива байт:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
            string str = "qwerty";
            byte[] bytes = Encoding.Default.GetBytes(str);
 
            int bitsperblock = 10; // битов в блоке
            int numofblocks = bytes.Length * 8 / bitsperblock; // количество блоков
            int bytesinblock = bitsperblock / 8 + 1; // байтов в блоке
            byte[] block = new byte[bytesinblock]; // блок
            BitArray bits;
            int offset = 0;
 
            //BitArray test = new BitArray(bytes); // вывожу исходн
            //for (int i = 0; i < test.Length; i++)
            //    Console.Write((test[i]) ? "1" : "0"); // вывожу все биты
 
            Console.WriteLine();
            for (int i = 0; i < numofblocks - 1; i++)
            {
                if (offset == 0)
                    Array.Copy(bytes, i * bytesinblock, block, 0, bytesinblock);
                else
                    Array.Copy(bytes, i * bytesinblock - 1, block, 0, bytesinblock);
 
                offset = bytesinblock * 8 - bitsperblock - offset;
                bits = new BitArray(block); // биты блока
 
                for (int j = offset; j < bitsperblock + offset; j++)
                    Console.Write((bits[j]) ? "1" : "0");
                Console.WriteLine();
            }
Запутался, помогите написать.
Читать весь файл нельзя.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2013, 20:01
Ответы с готовыми решениями:

RC4 c размером блока 16-бит
Была написана программа на питоне, с алгоритмом RC4, где блок 8 бит. import timeit data =...

Подсчет количества бит
Здравствуйте! У меня есть функция, которая считает количество бит в 32-х разрядном числе типа...

Быстрый подсчет количества бит
Нужно подсчитать количество бит, равных единице в int32, использую статический массив, в котором...

Поиск количества файлов указанного типа
Скрипт, который находит количество файлов указанного типа в указанной папке. Вывод осуществляется...

3
Эксперт С++
 Аватар для _lunar_
3701 / 2835 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 22
06.04.2013, 17:51 2
код писал без среды по памяти из одного примера
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.IO;
 
class Program
{
    static void Main()
    {
        var file = File.OpenRead("D:\\new.txt");
        byte[] buf = new byte[1024];
        int r = -1;
        byte b;
        while (r != 0)
        {
            r = file.Read(buf, 0, buf.Length);
            for (int j = 0; j < r; j++)
            {
                b = buf[j];
                for (int i = 9; i >= 0; i--)
                    Console.Write((b >> i) & 1);
                Console.Write((j + 1) % 1 == 0 ? '\n' : ' ');
            }
        }
        Console.ReadKey();
    }
}
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
06.04.2013, 18:49  [ТС] 3
_lunar_, вы невнимательно прочитали что мне нужно.

Уже не актуально.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
25.04.2013, 04:38 4
Всё равно интересный вопрос.
Вот мне кажется, что невозможно прочитать из файла именно бит. Можно читать как минимум байты. Я прав?
0
25.04.2013, 04:38
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2013, 04:38
Помогаю со студенческими работами здесь

Быстрый подсчёт количества выставленных бит
Привет магистры ассеблеровских диалектов! :) Нет ли на обычном CPU (типа i7) какой-то хитрой...

Вывести строку-описание указанного количества заданий
Дано целое число в диапазоне 10-40,определяющее количество учебных заданий по некоторой теме....

Вывод на экран указанного количества концентрических окружностей
помогите пожалуйста &quot;Программа запрашивает у пользователя значение радиуса и количество...

Переименование указанного количества файлов следуя нумерации
Здравствуйте. Есть ли способ переименовать заданное количество файлов в указанной папке, продолжая...

Вывести строку-описание указанного количества заданий
Дано целое число в диапазоне 10–40, определяющее количество учеб- ных заданий по некоторой теме....

Чтение 16 бит шины I2C
Как это можно сделать в Линуксе Ubuntu? есть i2cget , но мне надо прочитать адрес регистра из 16...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
[golang]
alhaos 28.01.2025
/ / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview / / majorityElement / / / / 169. Majority Element / / Given an array nums of size n, return the majority element. / / . . .
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
Как записать только часть изменений файла в Git
bytestream 28.01.2025
В процессе разработки программного обеспечения часто возникает необходимость сохранить только определенные изменения из множества внесенных правок в файлах. Система контроля версий Git предоставляет. . .
[golang] 80. Remove Duplicates from Sorted Array II
alhaos 28.01.2025
В предоставленном упорядоченном по возрастанию целочисленном слайсе, оставить уникальные элементы полюс один возможный дубликат. Вернуть количество таких элементов. / / . . .
Что такое внедрение зависимостей и для чего оно применяется
bytestream 27.01.2025
В современной разработке программного обеспечения одной из ключевых проблем является управление зависимостями между различными компонентами системы. Внедрение зависимостей (Dependency Injection, DI). . .
Как установить cellpadding и cellspacing в CSS
bytestream 27.01.2025
При создании веб-страниц с табличными данными разработчики часто сталкиваются с необходимостью правильного оформления внутренних и внешних отступов в таблицах. В традиционной разметке HTML для этих. . .
Чем отличаются public, protected, package-private и private в Java
bytestream 27.01.2025
В языке программирования Java механизм модификаторов доступа играет ключевую роль в реализации одного из фундаментальных принципов объектно-ориентированного программирования - инкапсуляции. . . .
Зачем нужно explicit в C++. Преобразование типов
bytestream 27.01.2025
В мире программирования на C++ управление преобразованием типов данных играет crucial роль в создании надежного и безопасного кода. Язык C++ предоставляет множество механизмов для контроля над. . .
Как создать удалённую (remote) ветку в Git
bytestream 27.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления кодовой базой. Одним из ключевых. . .
Как создать утечку памяти в Java
bytestream 27.01.2025
Утечка памяти в Java представляет собой ситуацию, когда программа неэффективно использует доступную память, удерживая ссылки на объекты, которые больше не нужны для работы приложения. Несмотря на. . .
КуМир: как решать задачи на числа
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой уникальную образовательную среду программирования, разработанную специально для обучения основам алгоритмизации и программирования. Эта система. . .
Исполнитель Черепаха в КуМир: как решать задачи
bytestream 27.01.2025
Исполнитель Черепаха в системе КуМир представляет собой мощный образовательный инструмент, который помогает освоить основы программирования через визуальное представление результатов выполнения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru