|
преобразование числа в строку |
|
|
|
Jan 11 2008, 22:02
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Доброй ночи.
такая проблемка нужно преобразовать число unsigned int в символы char ,использую стандартную функцию компилятора sprintf(mass,"%u\n",count); все бы не чего только эта функция преобразует число инт в восьмеричную систему счисления , тоесть если count инкриминируется 1,2,3,4,5,6,7 после идет 10. что это такое и как его заставить преобразовывать в dec? не пойму
|
|
|
|
|
 |
Ответов
|
Feb 4 2008, 21:59
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(aspID @ Feb 4 2008, 19:28)  Есть ли у кого идеи, как наиболее оптимально реализовать преобразование 16-ричных данных в строку и обратно? ... На уровне UART ходят текстом 16ричные данные. ... Вот, можете использовать, накидал по-быстрому. Тут для байтов, но переделать нетрудно: Код //==============================================================// const char Table[16]={'0','1','2','3','4','5','6','7', '8','9','A','B','C','D','E','F'};
char* BinToHex(unsigned char data, char *ptr) { *ptr++ = Table[(data>>4)& 0x0f]; *ptr++ = Table[data & 0x0f]; return ptr; }
//==============================================================// // Convert string of two HEX ASCII chars into binary value // //==============================================================// unsigned char HexToBin(char hi_char, char lo_char) { hi_char -= '0'; if (hi_char > 9) { hi_char &= ~0x20; // Convert lower case to UPPER CASE hi_char -= 'A' - '0' - 0x0A; } lo_char -= '0'; if (lo_char > 9) { lo_char &= ~0x20; // Convert lower case to UPPER CASE lo_char -= 'A' - '0' - 0x0A; } return hi_char<<4 | lo_char; } //==============================================================//
|
|
|
|
|
Feb 4 2008, 22:26
|

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

|
Цитата(Baser @ Feb 5 2008, 00:59)  ....накидал по-быстрому. Торопиться не надо - tolower уже не сработает, да и дважды вычитать тоже никчему - пару лишних команд (если об AVR речь идет). Цитата hi_char -= '0'; if (hi_char > 9) { hi_char &= ~0x20; // Convert lower case to UPPER CASE hi_char -= 'A' - '0' - 0x0A; } Код if (hi_char > '9' ) { hi_char &= ~0x20; // Convert lower case to UPPER CASE hi_char -= ('A' - 10 ); } else hi_char -= '0';
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 6 2008, 11:21
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(zltigo @ Feb 5 2008, 00:26)  Торопиться не надо - tolower уже не сработает, да и дважды вычитать тоже никчему - пару лишних команд (если об AVR речь идет). Торопиться, действительно, не нужно. Но! Это не значит, что функции, которые я предлагаю общественному вниманию, не проверены. Тем более, что я "накидал по-быстрому" только первую функцию, а вторая была взята из рабочего проекта tolower там точно сработать не может, посколько там у меня toupper А насчет вашего варианта, так его плюсы это более "понимабельный" код, поскольку он копирует человеческий процесс перевода hex в bin и не применяет неочевидных финтов. И еще у него время обработки меньше зависит от входных данных, но это мало когда важно. Из минусов отмечу (для AVR с ИАРом) больший на две команды размер кода за счет лишних переходов
|
|
|
|
Сообщений в этой теме
sergey sva преобразование числа в строку Jan 11 2008, 22:02 sergeeff Jr. Ну вот тут в самом низу winbatch например написал ... Jan 11 2008, 22:19 zltigo Цитата(sergey sva @ Jan 12 2008, 00:02) ч... Jan 11 2008, 22:44 Andrеys не стал создавать новую тему, так будет, наверное,... Feb 3 2008, 10:01 AHTOXA Цитата(Andrеys @ Feb 3 2008, 15:01) так о... Feb 3 2008, 10:45 Andrеys Переобъявил, стало получше) спасибо
но числа пока ... Feb 3 2008, 15:02 AHTOXA Там в IAR как-то надо подключать нужный вариант pr... Feb 3 2008, 15:04 Andrеys получилось код теперь выглядит так
sprintf(str,... Feb 3 2008, 15:05 AHTOXA Цитата(Andrеys @ Feb 3 2008, 20:05) стран... Feb 3 2008, 15:09 sergeeff Jr. Гляньте еще на функции для конвертирования чисел в... Feb 3 2008, 15:33 Baser А можно применить и свои, нестандартные функции. О... Feb 3 2008, 18:00    zltigo Цитата(Baser @ Feb 6 2008, 14:21) Но... Feb 6 2008, 12:27 Andrеys ЦитатаНе должно такого быть. Давайте лучше пример ... Feb 5 2008, 12:15 Сергей Борщ Цитата(Andrеys @ Feb 5 2008, 14:15) я под... Feb 5 2008, 14:54 aspID Код#ifndef _HEX_STRINGS_H_
#define _HEX_STRINGS_H_... Feb 5 2008, 12:21 Палыч Цитата(aspID @ Feb 5 2008, 15:21) Все это... Feb 5 2008, 12:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|