我需要將uint16_t值轉換爲字符串。我希望字符串是數字的小數代表。將用整數(uint16_t)轉換爲字符串。標準itoa基數10給出負值
示例:uint16_t I = 256串:256
我試圖與itoa(i,string, 10)
但i
值增加開始時打印負值。
我通過串口發送字符串(UART)
它有一些選擇嗎?
我需要將uint16_t值轉換爲字符串。我希望字符串是數字的小數代表。將用整數(uint16_t)轉換爲字符串。標準itoa基數10給出負值
示例:uint16_t I = 256串:256
我試圖與itoa(i,string, 10)
但i
值增加開始時打印負值。
我通過串口發送字符串(UART)
它有一些選擇嗎?
您可以嘗試使用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。
使用'snprintf(str,sizeof(str),「%d」,i);'儘管緩衝區溢出機會較少。 – sameerkn
@sameerkn,請分享鏈接到一個庫,在那裏你發現'snprintf'函數提供原型 – Sergey
我不確定,但在muy情況下是固件,我想通過串口發送字符串,snprintf我猜它在這種情況下不起作用.... – user3278790
使用sprintf
與%u
格式unsigned int
:
uint16_t i = 33000;
sprintf(str, "%u", i);
你是什麼意思一邊說:*,但是當我值增加*? – Sergey
這是固件所以sprintf()我猜這不是一個posible選擇在這種情況下... – user3278790
我有一個uint16_t計數器,當開始增加,由uart發送0..1 ... 2,127, -1.-2 ..- 3 ...然後當溢出返回到0. – user3278790