Easyelectronics.ru

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

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

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

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


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

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


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

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


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

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


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

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


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

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 616
Откуда: Челябинск
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
Сообщения: 758
Возможно, будет полезно:

Код:
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
Сообщения: 2177
Bill писал(а):
Хм... Если использовать старенький прцессор, то можно уложиться и в 2 инструкции.
...
А для Z80 и одной хватит

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


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

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


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

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


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

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

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