Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676

Работа с битами

11.12.2020, 19:31. Показов 1417. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, ковыряю RLE и по мелочам работу с битами. С одной стороны есть List<bool> и BitArray, с другой это наверное "тяжело" для реализации работы с битами. Как бы можно работать с частями byte, int например. Отсюда вопрос, как это делать в C# например я имею структуру
int A;
bool B;
string C;
и каким образом её представить например в byte[]? Если A и C кратны byte, то bool сдвинет порядок на 1 бит и как с этим работать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2020, 19:31
Ответы с готовыми решениями:

Работа с битами
Здравствуйте, необходимо считать данные из файла. В нем последовательно записаны 3 переменные :X=10 бит; Y = 10 бит и Z=12 бит. Я считал...

Работа с битами числа
Не подскажите как можно инвертировать число?

Работа с битами
Здравствуйте! Подскажите, как работать с битами данных. у меня есть данные и мне нужно иметь возможность изменять с них биты. Как это...

6
Эксперт .NET
 Аватар для Rius
13153 / 7711 / 1679
Регистрация: 25.05.2015
Сообщений: 23,498
Записей в блоге: 14
11.12.2020, 20:03
Как и C/C++. Маска и сдвиг.
Побитовые операторы и операторы сдвига (справочник по C#).
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
11.12.2020, 20:34  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Как и C/C++. Маска и сдвиг.
в общем рукожопить. ок.
0
Пора на C++?
 Аватар для TrickyBestia
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275
11.12.2020, 20:52
Цитата Сообщение от belalugoci Посмотреть сообщение
я имею структуру
int A;
bool B;
string C;
и каким образом её представить например в byte[]?
Легко.
Первая ссылка из выдачи гугла:
C#
1
2
3
4
5
6
7
8
9
10
11
byte[] GetBytes<T>(T strct) where T : struct
{
    int size = Marshal.SizeOf(strct);
    byte[] arr = new byte[size];
 
    IntPtr ptr = Marshal.AllocHGlobal(size);
    Marshal.StructureToPtr(strct, ptr, true);
    Marshal.Copy(ptr, arr, 0, size);
    Marshal.FreeHGlobal(ptr);
    return arr;
}
0
11.12.2020, 20:54

Не по теме:

О, вторая трактовка, чего же он на самом деле имел в виду.
Кто ещё? :) Спрашивать автора нельзя - будет срач.

0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
11.12.2020, 22:14
Непонятно, о чем именно вы спрашиваете. Помимо постов выше, есть ещё такая штука как StructLayout
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
12.12.2020, 09:57  [ТС]
Цитата Сообщение от Toros1992 Посмотреть сообщение
Непонятно, о чем именно вы спрашиваете
когда на C# я использую данные, они могут быть кратный байту, а могут и не быть. Вы можете данные сериализировать на диск, но тогда это будет просто представление этих данных - конкретной структуры или класса - на диске. А если вы хотите сохранить данные компактно, то для вас единицей измерения будет бит, а не байт. Для этого все данные вам нужно компактно разместить последовательно друг за другом. Как правильно дал ссылку Rius - можно заниматься этим вручную, как я сам написал выше - можно данные предварительно собрать в BitArray или List<bool>. Я лишь спросил - есть ли еще способ компактно собрать данные.

Цитата Сообщение от Rius Посмотреть сообщение
О, вторая трактовка, чего же он на самом деле имел в виду.
Кто ещё? Спрашивать автора нельзя - будет срач.
Не судите о людях по себе. TrickyBestia просто не прочитал сообщение до конца сфокусировавшись на фразе "каким образом представить структуру в byte[]" - вырванное из контекста всегда может иметь несколько смыслов.

Добавлено через 1 час 2 минуты
Нашел такое. Это мне понятно, ссылку выложил для тех кто позже будет читать.
Тут очень хорошо рассказано про маски. Русская часть статьи совсем куцая. Надо наверное самому перевести...
Еще есть это. Тут есть такой же способ как и показал TrickyBestia.
Есть еще такое. Весьма простой вариант решения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2020, 09:57
Помогаю со студенческими работами здесь

Работа с битами И Работа с символьными данными
1. Ввести 8 символов. В символе с наибольшим кодом заменить 5-й бит единицей, а в символе с наименьшим кодом 6-й бит - нулем. Вывести...

Работа с битами
Всем привет, переписываю проект с С на Ассемблерб столкнулся с проблемой! есть простая классическая конструкция на С: unsigned char...

! работа с битами !
Есть таблица, одно из полей которой (ProcessFlag) содержит целое число. Нужно в SQL запросе узнать, являются ли два младших бита...

Работа с битами на C++
Доброго дня, уважаемые форумчане! Снова возникли определенные затруднения и я снова обращаюсь к вам. На этот раз проблема следующая. ...

Работа с битами
есть некоторый char используется как байт. есть переменная int x, в которой содержится номер бита со значением y. как записать этот...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[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