Форум программистов, компьютерный форум CyberForum.ru

получить 4бит из байта - C++

Восстановить пароль Регистрация
 
karaulov6
15 / 15 / 1
Регистрация: 23.03.2013
Сообщений: 140
28.03.2013, 22:07     получить 4бит из байта #1
есть байт, например 32

что написать в структуру что бы прочитать отдельно 3 и 2 ?

(если просто BYTE тогда что дальше делать с байтом что занести 3 и 2 отдельно в переменные?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 22:07     получить 4бит из байта
Посмотрите здесь:

Вывести шестнадцатеричное представление байта C++
C++ Маска байта
C++ Как сдвинуть указатель на double на 4 байта?
Размер байта C++
C++ Определение младшего и старшего байта
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Harutyunyan
1 / 1 / 0
Регистрация: 28.09.2012
Сообщений: 91
28.03.2013, 22:14     получить 4бит из байта #2
может через ассемблерные вставки сделать? и через PTR получить их
karaulov6
15 / 15 / 1
Регистрация: 23.03.2013
Сообщений: 140
28.03.2013, 22:23  [ТС]     получить 4бит из байта #3
не, мне нужно читать/записывать в файл структурой. Там все понятно, только вот эти флаги осталось.


для примера байт "12" ,что записать в структуру для чтения только 4х битов(раздельно 1 и 2)?
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
29.03.2013, 00:03     получить 4бит из байта #4
А поля использовать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main() {
    struct {
        // поля структуры
        union {
            unsigned char i;
            struct {int l:4, h:4;} i4;
        } n;
    } s;
    s.n.i4.l = 7;
    s.n.i4.h = 4;
    printf("%02X\n", s.n.i); // 47
    return 0;
}
Здесь сложно, потому два поля для пробы читаются как один байт.
А если их читать не нужно, то можно обойтись без union:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main() {
    struct {
        // поля структуры
        int l:4, h:4;
    } s;
    s.l = 7;
    s.h = 4;
    printf("%02X\n", s); // CCCCCC47
    return 0;
}
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
29.03.2013, 01:13     получить 4бит из байта #5
Цитата Сообщение от Harutyunyan Посмотреть сообщение
может через ассемблерные вставки сделать?
Может микроконтроллер запрограммировать чтобы обращался к оп, искал необходимый кусок памяти о смотрел на 4ый бит?

Цитата Сообщение от karaulov6 Посмотреть сообщение
есть байт, например 32
что написать в структуру что бы прочитать отдельно 3 и 2 ?
что значит есть байт, например 32 ? Если есть байт с содержимым = 32 в десятичной системе то это есть байт 100000 и если нужно получить его части то можно воспользоваться наложением масок, но байт с содержимым = 32 это не две половинки с содержимым 3 и 2!
karaulov6
15 / 15 / 1
Регистрация: 23.03.2013
Сообщений: 140
31.03.2013, 00:14  [ТС]     получить 4бит из байта #6
как это сделать? допустим в структуру занес просто BYTE , а теперь как получить 1 и 2 цифру раздельно?

(через sprintf ?)
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
31.03.2013, 00:27     получить 4бит из байта #7
Всё непонятнее становится. Сначала надо было прочитать, теперь получить...
Если b - байт (unsigned char), то b & 15 даст первую цифру b >> 4 даст вторую цифру.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2013, 00:33     получить 4бит из байта
Еще ссылки по теме:

C++ Чтение байта по адресу
Битовое представление каждого байта C++
C++ UTF-8 признак последнего байта

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

Или воспользуйтесь поиском по форуму:
karaulov6
15 / 15 / 1
Регистрация: 23.03.2013
Сообщений: 140
31.03.2013, 00:33  [ТС]     получить 4бит из байта #8
Цитата Сообщение от palva Посмотреть сообщение
Всё непонятнее становится. Сначала надо было прочитать, теперь получить...
Если b - байт (unsigned char), то b & 15 даст первую цифру b >> 4 даст вторую цифру.

Спасибо то что нужно(только у меня b & 15 - вторая , а b >> 4 - первая, ну разницы нету )
Yandex
Объявления
31.03.2013, 00:33     получить 4бит из байта
Ответ Создать тему
Опции темы

Текущее время: 22:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru