2017-01-27 12 views
0

Мне нужно преобразовать значение uint16_t в строку. Я хочу, чтобы строка была десятичной репрезентацией числа.Преобразовать целое число (uint16_t) в строку. Стандартная база itoa 10 дает отрицательные значения

Пример: uint16_t я строка = 256: 256

Я попытался с itoa(i,string, 10) но когда начинается i значение увеличивается печать отрицательных значений.
Я отправляю строку через последовательный порт. (UART)
Есть ли альтернатива?

+0

Что вы имеете в виду, говоря: * но когда я значение увеличивается *? – Sergey

+0

Это для прошивки, поэтому sprintf() Я предполагаю, что это не выбор в этом случае ... – user3278790

+0

У меня есть счетчики uint16_t, когда начинается увеличение, отправляется uart 0..1 ... 2, 127, -1.-2 ..- 3 ... а затем при переполнении до 0. – user3278790

ответ

0

Вы можете попытаться использовать sprintf() для обычных преобразований «в строку». Например:

#include <stdio.h> 
#include <math.h> 

int main() { 
    uint16_t i = 256; 
    char str[80]; 

    int str_len = sprintf(str, "%d", i); 

    return(0); 
} 

Для получения дополнительной информации смотрите на this article.

+0

используйте 'snprintf (str, sizeof (str),"% d ", i);' даже если вероятность переполнения буфера меньше. – sameerkn

+0

@sameerkn, пожалуйста, поделитесь ссылкой на библиотеку, где вы нашли функцию «snprintf» с представленным прототипом – Sergey

+0

Я не уверен, но в случае с muy для прошивки я хочу отправить строку через последовательный порт, snprintf, я думаю он не работает в этом случае .... – user3278790

0

Использование sprintf с форматом %u для unsigned int:

uint16_t i = 33000; 
sprintf(str, "%u", i); 

 Смежные вопросы

  • Нет связанных вопросов^_^