Преобразование данных

IUS
Offline
Зарегистрирован: 15.01.2015

Добрый день.

Имееется 2 бита данных в HEX формате. как програмно преобразовать в десятичное число.

Пример стрший байт 01 (HEX) , младший байт 4D (HEX)  с помощью виндового калькулятора набираю 014D преобразую в десятичную получается 333 (DEC)  как это описать в С.

Заранее благодарен. 

toc
Offline
Зарегистрирован: 09.02.2013

int x = 0x014D;
Serial.println(x); // напечатает 333

IUS
Offline
Зарегистрирован: 15.01.2015

Да это я понимаю, но с помощью какой функции сложить эти байты? (совместить, объеденить)

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011
IUS
Offline
Зарегистрирован: 15.01.2015

Спасибо

 

IUS
Offline
Зарегистрирован: 15.01.2015

Нет. не пойму как объеденить два однобайтных значения в одно двухбайтное.

Есть масив  Receive  

    word Ph = (Receive[3], Receive[4]);  

     Serial.print(Ph);   
Не работает!!!
arduinec
Offline
Зарегистрирован: 01.09.2015

IUS пишет:

Нет. не пойму как объеденить два однобайтных значения в одно двухбайтное.

Rezultat = 256 * Bait1 + Bait2

IUS
Offline
Зарегистрирован: 15.01.2015

я так сделал уже , заработало

   word  Ph = (Receive[3] << 8); 
    Ph = Ph +  Receive[4];
     Serial.print(Ph);   
и в итоги появился новый впрос, а что быстрей выполняется, умножение или сдвиг?
 
arduinec
Offline
Зарегистрирован: 01.09.2015

IUS пишет:

а что быстрей выполняется, умножение или сдвиг?

Сдвиг быстрее

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

IUS, обычно это делают одной строчкой:  Ph=(Receive[3] << 8) | Receive[4];

IUS
Offline
Зарегистрирован: 15.01.2015

Спасибо,