Easyelectronics.ru

Электроника для всех
Текущее время: 18 июн 2018, 16:12

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: преобразование ascii в hex
СообщениеДобавлено: 09 июн 2018, 10:17 
Заглядывает иногда

Зарегистрирован: 27 мар 2018, 14:17
Сообщения: 42
С терминала вводятся ascii данные в формате 0x** (0x45, 0xab итп). Есть ли некие стандартные функции или алгоримы для простого или изящного преобразования данных в hex? А то пока ничего в голову не приходит, кроме как анализировать символ на предмет число это или буква и потом хмуро преобразовывать его из ascii в числа. Есть жи функция atoi() для преобразования десятичного числа в Ascii в int, может есть нечто похожее для моего случая?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 09 июн 2018, 10:31 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1814
стандартная ф-ция atoi - ASCII to integer. А обратная ей - itoa - integer to ASCII


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 09 июн 2018, 10:34 
Старожил

Зарегистрирован: 09 сен 2010, 20:43
Сообщения: 303
Откуда: Донецк
"изящные" и "стандартные" плохо сочетаются. Нет, стандартные не плохие, но они, как правило универсальные, поэтому изящными назвать их сложно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 09 июн 2018, 11:06 
Заглядывает иногда

Зарегистрирован: 27 мар 2018, 14:17
Сообщения: 42
Похоже, что strtol() нам в помощь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 09 июн 2018, 11:52 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1814
Почему же плохо сочетаются? Стандартные memset, memcpy применительно к ARM работают изящнее любого самописного Си-алгоритма, поскольку ассемблерный цикл содержит всего 4 инструкции и не зависит от примененной оптимизации


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 11 июн 2018, 10:24 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 612
Откуда: Челябинск
BusMaster писал(а):
Почему же плохо сочетаются? Стандартные memset, memcpy применительно к ARM работают изящнее любого самописного Си-алгоритма, поскольку ассемблерный цикл содержит всего 4 инструкции и не зависит от примененной оптимизации

Хм... Если использовать старенький прцессор, то можно уложиться и в 2 инструкции.
Код:
loop:  mov    (r1)+, (r0)+
       sob    r3, loop
Или нет?
А для Z80 и одной хватит
Код:
     ldir


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 15 июн 2018, 16:46 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 733
Возможно, будет полезно:

Код:
static inline uint8_t sym2byte(char c) {
   return (uint8_t)(c <= '9' ? c - '0' : c - 'A' + 10);
}

static inline char byte2sym(uint8_t n) {
   return n < 10 ? '0' + n : 'A' - 10 + n;
}


Операции преобразуют 4-х битные значения в соответствующий ascii код и обратно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование ascii в hex
СообщениеДобавлено: 15 июн 2018, 17:30 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1651
Bill писал(а):
Хм... Если использовать старенький прцессор, то можно уложиться и в 2 инструкции.
...
А для Z80 и одной хватит

Это потому, что эти процессоры CISC. ARM-ы - RISC и чаще всего требуют больше команд для получения того же результата. Если очень грубо, то CISC делает одну микроинструкцию за такт, но одна инструкция состоит из многих микроинструкций, RISC - одну инструкцию за такт. Там могут быть сверху еще навороты (суперскалярность, конвеер и прочие прибамбасы, которые позволяют получить более высокое количество инструкций за такт), но сути дела это не меняет.


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

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


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

Сейчас этот форум просматривают: aamonster


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

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

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