Easyelectronics.ru

Электроника для всех
Текущее время: 29 сен 2020, 01:39

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: 3 ascii числа в HEX
СообщениеДобавлено: 04 май 2016, 14:44 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Здравствуйте. Подскажите как сделать эту конвертацию?

Приходят 3 числа ASCII кода - например 2,0,0
Нужно перевести в HEX - С8.

Как это правильно реализовать ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3 ascii числа в HEX
СообщениеДобавлено: 04 май 2016, 14:56 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:19
Сообщения: 6772
Откуда: Из тех... Из бывших...
Прибавить 30? Или я недопонял?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3 ascii числа в HEX
СообщениеДобавлено: 04 май 2016, 15:03 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6955
static const uint8_t B2H [] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

bin=(первой число - '0')*100 + (второе число - '0')*10 + (третье число - '0');
hex1 = B2H[bin & 0xF];
hex0 = B2H[(bin/16) & 0xF];

add
Сглупил с таблицей, исправлено.


Последний раз редактировалось u37 04 май 2016, 15:14, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3 ascii числа в HEX
СообщениеДобавлено: 04 май 2016, 15:13 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
u37 писал(а):
static const uint8_t B2H [] = { 0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF};

bin=(первой число - '0')*100 + (второе число - '0')*10 + (третье число - '0');
hex1 = B2H[bin & 0xF];
hex0 = B2H[(bin/16) & 0xF];


Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3 ascii числа в HEX
СообщениеДобавлено: 04 май 2016, 16:08 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Другой метод.
Код:
static inline char code_to_ascii(uint8_t b)
{
  return b < 10 ? b + '0' : b - 10 + 'A';
};


Обратное преобразование:
Код:
static inline uint8_t ascii_to_code(char c)
{
  return c <= '9'  ? c  - '0' : c + 10 - 'A';
};


Таблица, впрочем, немного быстрее. Но я предпочитаю эти функции.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB