|
|
 |
Ответов
|
Jun 29 2010, 13:48
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Код void itoad(int number, uint8_t *string) { uint8_t sign; *(int32_t *) string = ' ' | ' ' << 8 | ' ' << 16 | ' ' << 24; *(int32_t *)(string + 4) = ' ' | ' ' << 8 | ' ' << 16 | ' ' << 24; *(int32_t *)(string += 8) = ' ' | ' ' << 8 | '0' << 16 | '\0'<< 24; if (!number) return; if (number > 0) sign = '+'; else { number = -number; sign = '-'; } string += 2; do { *string-- = number % 10 + '0'; } while (number /= 10); *string = sign; } Работает с 32-битовыми числами со знаком. string должна быть 12 байтов для 32-битового числа. 60 байтов (+ 4 байта хранят константу "_ _ 0"). ~207 тактов.
|
|
|
|
|
Jun 29 2010, 14:18
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ViKo @ Jun 29 2010, 16:48)  Код *(int32_t *) string = Знатная грабля. Исключение при первой же string, начало которой не попадает на границу 4 байт. Или просто порушенные соседние данные.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 29 2010, 14:34
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Сергей Борщ @ Jun 29 2010, 17:18)  Знатная грабля. Исключение при первой же string, начало которой не попадает на границу 4 байт. Или просто порушенные соседние данные. Это гнулось под Cortex - такая вот игра. QUOTE (ViKo @ Jun 29 2010, 16:48)  60 байтов Чуть симпатичнее и скорее всего еще короче: CODE void itoad(int number, uint8_t *string) { uint8_t sign; *(uint32_t *) string = ' '; *(uint32_t *)(string + 4) = ' '; *(uint32_t *)(string += 10) = (uint32_t )" 0"; if (!number) return; if (number > 0) sign = '+'; else { number = -number; sign = '-'; } // string += 2; do { *string-- = number % 10 + '0'; } while (number /= 10); *string = sign; } Осталось первоначальную 16bit оптимизировать.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
badik Вопрос С Jun 24 2010, 18:29 DRUID3 atoi()/itoa(); Или что-то отсюда... Jun 24 2010, 18:43 Genadi Zawidowski Тут или пользоваться sprintf (или её вариантами - ... Jun 24 2010, 18:57 ViKo В свое время я задавал такой же вопрос. Получил не... Jun 25 2010, 11:29 zltigo QUOTE (ViKo @ Jun 25 2010, 14:29) Сам нап... Jun 25 2010, 11:38  sonycman Цитата(zltigo @ Jun 25 2010, 15:38) Совет... Jun 25 2010, 12:15  ViKo Цитата(zltigo @ Jun 25 2010, 14:38) Совет... Jun 25 2010, 12:21 jorikdima Цитата(ViKo @ Jun 25 2010, 15:29) В свое ... Jun 25 2010, 12:17 defunct Цитата(ViKo @ Jun 25 2010, 14:29) Сам нап... Jun 25 2010, 16:48  ssvSerge Цитата(defunct @ Jun 25 2010, 19:48) Друг... Jun 25 2010, 17:26 zltigo QUOTE (sonycman @ Jun 25 2010, 15:15) Что... Jun 25 2010, 12:24 ViKo Цитата(zltigo @ Jun 25 2010, 15:24) ...ли... Jun 25 2010, 12:31  sonycman Цитата(ViKo @ Jun 25 2010, 16:31) Оставил... Jun 25 2010, 12:38   zltigo QUOTE (sonycman @ Jun 25 2010, 15:38) Осо... Jun 25 2010, 12:57    ViKo Цитата(zltigo @ Jun 25 2010, 15:57) В дан... Jun 25 2010, 13:06    sonycman Цитата(zltigo @ Jun 25 2010, 16:57) Ну дл... Jun 25 2010, 13:13     aaarrr Цитата(sonycman @ Jun 25 2010, 17:13) Нер... Jun 25 2010, 13:14 ViKo Цитата(zltigo @ Jun 25 2010, 15:24) лучше... Jun 25 2010, 12:50  zltigo QUOTE (ViKo @ Jun 25 2010, 15:50) У вас е... Jun 25 2010, 13:28   ViKo Цитата(zltigo @ Jun 25 2010, 16:28) как и... Jun 25 2010, 13:34    zltigo QUOTE (ViKo @ Jun 25 2010, 16:34) нужно п... Jun 25 2010, 13:39     ViKo Цитата(zltigo @ Jun 25 2010, 16:39) Про ... Jun 25 2010, 13:43      aaarrr Цитата(ViKo @ Jun 25 2010, 17:43) И к код... Jun 25 2010, 14:49 aaarrr Просто как пример:
Кодunsigned int short2str(c... Jun 25 2010, 12:41 zltigo QUOTE (ViKo @ Jun 25 2010, 16:43) Это у в... Jun 25 2010, 13:56 ViKo Цитата(zltigo @ Jun 25 2010, 16:56) Ну эт... Jun 25 2010, 14:04  zltigo QUOTE (ViKo @ Jun 25 2010, 17:04) О! ... Jun 25 2010, 14:10   ViKo Цитата(zltigo @ Jun 25 2010, 17:10) Ну, н... Jun 25 2010, 16:15    Genadi Zawidowski Цитата(ViKo @ Jun 25 2010, 20:15) А разве... Jun 25 2010, 20:33     ViKo Цитата(Genadi Zawidowski @ Jun 25 2010, 23... Jun 25 2010, 21:29     ReAl Цитата(Genadi Zawidowski @ Jun 25 2010, 23... Jun 26 2010, 09:04      sonycman Цитата(ReAl @ Jun 26 2010, 13:04) Оптимиз... Jun 26 2010, 09:23      demiurg_spb Цитата(ReAl @ Jun 26 2010, 13:04) Так что... Jun 27 2010, 18:51 sonycman Цитата(zltigo @ Jun 25 2010, 17:56) А то,... Jun 25 2010, 14:55  zltigo QUOTE (sonycman @ Jun 25 2010, 17:55) Буд... Jun 25 2010, 16:30 Goodefine Когда то для дисплея (отсюда фиксированное число ц... Jun 25 2010, 16:19 ViKo Цитата(Goodefine @ Jun 25 2010, 19:19) vo... Jun 25 2010, 17:16 ViKo Пролистал K&R второе издание от корки до корки... Jun 25 2010, 19:15 aaarrr Цитата(ViKo @ Jun 25 2010, 23:15) Найти б... Jun 25 2010, 19:20 dimka76 Цитата(ViKo @ Jun 25 2010, 23:15) Пролист... Jun 26 2010, 04:36 zltigo QUOTE (ViKo @ Jun 25 2010, 22:15) Пролист... Jun 26 2010, 08:11  ViKo Цитата(zltigo @ Jun 26 2010, 11:11) Не об... Jun 26 2010, 09:08   zltigo QUOTE (ViKo @ Jun 26 2010, 12:08) А я для... Jun 26 2010, 09:18 sigmaN K&R не Ымбеддеры. А zltigo дело говорит вам. К... Jun 25 2010, 19:27 ViKo Покопался в своих проектах, нашел преобразование д... Jun 25 2010, 19:52 Непомнящий Евгений В свое время написал такое:
CODE
/**
* "Указ... Jun 26 2010, 09:16 ViKo Следуя рекомендациям, слегка модернизировал код.
К... Jun 26 2010, 10:24 ssvSerge Цитата(ViKo @ Jun 26 2010, 14:24) Следуя ... Jun 26 2010, 11:31 zltigo QUOTE (ViKo @ Jun 26 2010, 13:24) Для все... Jun 26 2010, 15:05  ViKo Цитата(zltigo @ Jun 26 2010, 18:05) // За... Jun 26 2010, 16:28   zltigo QUOTE (ViKo @ Jun 26 2010, 19:28) Sign - ... Jun 26 2010, 16:40   aaarrr Цитата(ViKo @ Jun 26 2010, 20:28) 2 aaarr... Jun 26 2010, 16:51 ViKo 2 ssvSerge
В ваших алгоритмах число записывается з... Jun 26 2010, 13:55 ssvSerge Цитата(ViKo @ Jun 26 2010, 16:55) В алгор... Jun 26 2010, 14:19  ViKo Цитата(ssvSerge @ Jun 26 2010, 17:19) ну ... Jun 26 2010, 14:42   ssvSerge Цитата(ViKo @ Jun 26 2010, 18:42) для мен... Jun 26 2010, 15:12   aaarrr Цитата(ViKo @ Jun 26 2010, 18:42) В данны... Jun 26 2010, 15:14 ViKo Спасибо всем! На сегодня и завтра - умолкаю. ... Jun 26 2010, 17:00 sonycman Цитата(ViKo @ Jun 26 2010, 21:00) Возраду... Jun 27 2010, 17:02 badik Господа всем огромный привет, ни как не думал, что... Jun 28 2010, 17:43 ViKo Прежде, чем писать новое, изучил в отладчике работ... Jun 28 2010, 21:09 zltigo QUOTE (ViKo @ Jun 29 2010, 00:09) Заносит... Jun 28 2010, 21:33  ViKo Цитата(zltigo @ Jun 29 2010, 00:33) Их у ... Jun 28 2010, 21:57   zltigo QUOTE (ViKo @ Jun 29 2010, 00:57) Перед ... Jun 28 2010, 22:03    ViKo 2 zltigo
Непременно.
Выставил две "галки... Jun 29 2010, 08:29  ViKo Цитата(Сергей Борщ @ Jun 29 2010, 17:18) ... Jun 29 2010, 14:29   ViKo Цитата(zltigo @ Jun 29 2010, 17:34) *(uin... Jun 29 2010, 14:39    zltigo QUOTE (ViKo @ Jun 29 2010, 17:39) Кавычки... Jun 29 2010, 14:45   ViKo Цитата(zltigo @ Jun 29 2010, 17:34) Код ... Jun 29 2010, 17:23    zltigo QUOTE (ViKo @ Jun 29 2010, 20:23) Так - н... Jun 29 2010, 17:40     ViKo Цитата(zltigo @ Jun 29 2010, 20:40) Код ... Jun 29 2010, 18:29      zltigo QUOTE (ViKo @ Jun 29 2010, 21:29) В смысл... Jun 29 2010, 18:38       ViKo Цитата(zltigo @ Jun 29 2010, 21:38) Вот к... Jun 29 2010, 19:52        zltigo QUOTE (ViKo @ Jun 29 2010, 22:52) Во всех... Jun 29 2010, 21:13  ViKo Цитата(Сергей Борщ @ Jun 29 2010, 17:18) ... Jul 1 2010, 08:55   zltigo QUOTE (ViKo @ Jul 1 2010, 10:55) Только в... Jul 1 2010, 11:57    ViKo Цитата(zltigo @ Jul 1 2010, 14:57) Это де... Jul 1 2010, 12:34     zltigo QUOTE (ViKo @ Jul 1 2010, 14:34) Давайте ... Jul 1 2010, 12:38      ViKo Цитата(zltigo @ Jul 1 2010, 15:38) Думае... Jul 1 2010, 12:52       zltigo QUOTE (ViKo @ Jul 1 2010, 14:52) Хочу зна... Jul 1 2010, 12:55        ViKo Цитата(zltigo @ Jul 1 2010, 15:55) Посчит... Jul 1 2010, 13:59         zltigo QUOTE (ViKo @ Jul 1 2010, 15:59) 2 zltigo... Jul 1 2010, 14:11         sonycman Цитата(ViKo @ Jul 1 2010, 17:59) А SDIV r... Jul 1 2010, 15:24 ViKo Выкладываю ваш вариант.
Последнее, что вы написали... Jun 30 2010, 08:00 ViKo "Шеф, все пропало!..."
По команде ... Jun 30 2010, 09:22 zltigo QUOTE (ViKo @ Jun 30 2010, 11:22) На всяк... Jun 30 2010, 19:02  ViKo Цитата(zltigo @ Jun 30 2010, 22:02) Ну ес... Jun 30 2010, 20:29   zltigo QUOTE (ViKo @ Jun 30 2010, 22:29) У вас в... Jun 30 2010, 21:14 ViKo 16-битовая версия (на основе 32-битовой)
Кодvoid ... Jun 30 2010, 11:26 MrYuran Вот никак не могу понять, почему никто до сих пор ... Jun 30 2010, 11:31 ViKo Цитата(MrYuran @ Jun 30 2010, 14:31) Вот ... Jun 30 2010, 11:35 ViKo Напоследок - проверил вариант с преобразованием в ... Jun 30 2010, 13:12 aaarrr Цитата(ViKo @ Jun 30 2010, 17:12) Получил... Jun 30 2010, 13:34  ViKo Цитата(aaarrr @ Jun 30 2010, 15:34) Ну, э... Jun 30 2010, 13:44 _Pasha Цитата(MrYuran @ Jun 30 2010, 14:31) Тяжё... Jun 30 2010, 21:42 ViKo Перепробовал все "извращения" со сравнен... Jul 2 2010, 09:07 ViKo Думаю, хуже не станет, если я доложу, что уменьшил... Jul 2 2010, 18:43
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|