16.11.2012, 09:41
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Преобразование числа в строку STM32 Cocox
Добрый день, подскажите, как можно преобразовать число в строку на С++ для МК STM32?
работаю в среде Cocox
функция itoa() не определена.
sprintf() - пишет ошибку при компиляции
Чем можно воспользоваться?
|
|
|
|
16.11.2012, 12:02
|
|
Прописка
Регистрация: 14.04.2009
Сообщений: 103
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
Код:
|
void itoa(int val, int base, char *bufstr) // число в строку по основанию
{
uint8_t buf[32] = {0};
int i = 30;
int j;
for(; val && i ; --i, val /= base)
buf[i] = "0123456789abcdef"[val % base];
i++; j=0;
while (buf[i]!=0){ bufstr[j]=buf[i]; i++; j++;}
} |
|
|
|
Сказали "Спасибо" makser1
|
|
|
16.11.2012, 12:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
Ужас!!!
Три строки и столько ошибок.
Эт где так учать программы писать ?
|
|
|
|
16.11.2012, 13:12
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
sanstan какую ошибку sprintf выдает?
|
|
|
|
16.11.2012, 13:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
Сообщение от Boba_spb
|
Ужас!!!
Три строки и столько ошибок.
Эт где так учать программы писать ?
|
Пожалуйста, укажите на ошибки. Постарюсь не повторять.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
16.11.2012, 13:32
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
Спасибо автору, Функция работает!!
По поводу ошибок сам не понимаю, что компилятор пишет:
с функцией sprintf(CS, "%d", r); :
[cc] Starting link
[cc] arm-none-eabi-gcc -O0 -nostartfiles -Wl,-Map=ind_ADC.map -mcpu=cortex-m3 -mthumb -LD:\projects\STM32\ind_ADC -Wl,--gc-sections -Wl,-TD:\projects\STM32\ind_ADC\link.ld -g -o ind_ADC.elf ..\obj\startup_stm32f10x_md_vl.o ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\hd44780_driver.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\stm32f10x_rcc.o
[cc] c:/coocox/coide/gcc/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
[cc] sbrkr.c .text+0x12): undefined reference to `_sbrk'
[cc] collect2: ld returned 1 exit status
BUILD FAILED
Total time: 2 seconds
----------------------------------------------
без этой функции:
[cc] Starting link
[cc] arm-none-eabi-gcc -O0 -nostartfiles -Wl,-Map=ind_ADC.map -mcpu=cortex-m3 -mthumb -LD:\projects\STM32\ind_ADC -Wl,--gc-sections -Wl,-TD:\projects\STM32\ind_ADC\link.ld -g -o ind_ADC.elf ..\obj\startup_stm32f10x_md_vl.o ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\hd44780_driver.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\stm32f10x_rcc.o
Program Size:
text data bss dec hex filename
4120 0 1032 5152 1420 ind_ADC.elf
BUILD SUCCESSFUL
|
|
|
|
16.11.2012, 13:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
1. Prototype
char *itoa(int value, char *string, int radix);
2. itoa должна заканчивать строку нулевым байтом;
3. itoa(0,10,str) - не работает
4. itoa(-1,2,str) - не работает
Вот результат сравнения
---- 0 ----
Типа itoa -› Привет Волку
itoa -› 0
---- 12345 ----
Типа itoa -› 12345т Волку
itoa -› 12345
---- -1 ----
Типа itoa -› 12345т Волку
itoa -› 11111111111111111111111111111111
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *st="Привет Волку ";
char *st1="Привет Волку ";
int n=0;
itoa_n(n,10,st);
itoa(n,st1,10);
Memo1-›Lines-›Add("---- "+IntToStr(n)+" ----");
Memo1-›Lines-›Add("Типа itoa -› "+AnsiString(st));
Memo1-›Lines-›Add("itoa -› "+AnsiString(st1));
n=12345;
itoa_n(n,10,st);
itoa(n,st1,10);
Memo1-›Lines-›Add("---- "+IntToStr(n)+" ----");
Memo1-›Lines-›Add("Типа itoa -› "+AnsiString(st));
Memo1-›Lines-›Add("itoa -› "+AnsiString(st1));
n=0xffffffff;
itoa_n(n,2,st);
itoa(n,st1,2);
Memo1-›Lines-›Add("---- "+IntToStr(n)+" ----");
Memo1-›Lines-›Add("Типа itoa -› "+AnsiString(st));
Memo1-›Lines-›Add("itoa -› "+AnsiString(st1));
}
|
|
|
|
16.11.2012, 13:48
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
sanstan традиционный вопрос - гугл забанил? за минуту ищется эта непрописанная почему то в GCC библиотека для линковки "sprintf".
|
|
|
|
16.11.2012, 14:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
Сообщение от Boba_spb
|
1. Prototype
char *itoa(int value, char *string, int radix);
2. itoa должна заканчивать строку нулевым байтом;
3. itoa(0,10,str) - не работает
4. itoa(-1,2,str) - не работает
|
Да, спасибо. Тоже проверил. Работает только для положительного инта, для нуля и отрицательного - нет. Т.е решение частичное, ограниченное, с проверкой на › 0 по входу? Так? Печально, все так хорошо начиналось..
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
19.11.2012, 11:02
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Преобразование числа в строку STM32 Cocox
Hives sprintf не работает в COCOX. Либо я что-то замудрил.
Не знаете, почему функция strcat(str1,str2) выдает на индикаторе только первую часть полученой строки (str1) без (str2) ? ?
работает: strcat(str1,"primer");
не работает:
const char str2="primer";
strcat(str1,str2) ;
не работает:
char str2="primer";
strcat(str1,str2) ;
Последний раз редактировалось sanstan; 19.11.2012 в 11:19.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Преобразование числа
|
vvkka |
Микроконтроллеры, АЦП, память и т.д |
12 |
27.12.2011 01:44 |
Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)
|
Opasif |
Микроконтроллеры, АЦП, память и т.д |
6 |
29.04.2011 19:52 |
преобразование 16bit числа на Си (нужна помощь)
|
Uz_Sleep_Walker |
Микроконтроллеры, АЦП, память и т.д |
4 |
19.02.2010 15:49 |
как записать строку в массив?
|
dimonbest |
Микроконтроллеры, АЦП, память и т.д |
8 |
27.02.2008 12:18 |
преобразование числа для занесения его в регистр на PIC16F84
|
CERGEI1982 |
Микроконтроллеры, АЦП, память и т.д |
9 |
11.01.2007 17:47 |
Часовой пояс GMT +4, время: 12:44.
|
|