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

Совмещаем два байта - C++

Восстановить пароль Регистрация
 
RoboMaster
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 32
12.06.2013, 12:09     Совмещаем два байта #1
Привет всем. У меня вопрос. Пишу CRC16(Modbus) для МК AVR, у которых однобайтовые регистры приема информации(т.е. передать я не могу 2 байта сразу).

В Code::Blocks решил просимулировать ситуацию, вроде всё верно, а результат не тот получаю... У меня имеет 2х байтовая переменная int16_t d и две однобайтовые переменные b и с, должен получить результат 1500, а получаю -36, когда меняю однобайтовые переменные на двухбайтовые всё верно получается. Как быть?

C
1
2
3
4
5
6
7
8
int main()
{
    char b=0xDC, c=0x05; //0x05dc = 1500
    int16_t d;
    d = (b|c<<8);
    printf("%d\n",d);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 12:09     Совмещаем два байта
Посмотрите здесь:

Вывести шестнадцатеричное представление байта C++
C++ Маска байта
Размер байта C++
получить 4бит из байта C++
C++ Определение младшего и старшего байта
C++ Чтение байта по адресу
Битовое представление каждого байта C++
C++ UTF-8 признак последнего байта

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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