2017-01-27 56 views
0

我需要將uint16_t值轉換爲字符串。我希望字符串是數字的小數代表。將用整數(uint16_t)轉換爲字符串。標準itoa基數10給出負值

示例:uint16_t I = 256串:256

我試圖與itoa(i,string, 10)i值增加開始時打印負值。
我通過串口發送字符串(UART)
它有一些選擇嗎?

+0

你是什麼意思一邊說:*,但是當我值增加*? – Sergey

+0

這是固件所以sprintf()我猜這不是一個posible選擇在這種情況下... – 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);