2017-01-27 2 views
0

Ich muss Uint16_t Wert in eine Zeichenfolge konvertieren. Ich möchte, dass die Zeichenfolge eine dezimale Darstellung der Nummer ist.Konvertiert usigned Integer (uint16_t) in String. Standard Itoa Base 10 gibt negative Werte

Beispiel: uint16_t i = 256 string: 256

ich mit itoa(i,string, 10) versucht, aber wenn i Wert erhöht sich negative Werte beginnt zu drucken.
Ich sende die Zeichenfolge über die serielle Schnittstelle. (UART)
Es gibt da eine Alternative?

+0

Was meinen Sie, während sagen: * aber wenn ich erhöht Wert *? – Sergey

+0

Es ist für die Firmware so sprintf() Ich denke, es ist keine mögliche Wahl in diesem Fall ... – user3278790

+0

Ich habe einen Uint16_t Zähler, wenn beginnt zu erhöhen, indem der Uart gesendet wird 0..1 ... 2, 127, -1.-2 ..- 3 ... und dann bei Überlauf zurück 0. – user3278790

Antwort

0

Sie können versuchen, sprintf() für allgemeine "to string" Konvertierungen zu verwenden. Zum Beispiel:

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

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

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

    return(0); 
} 

Für weitere Informationen zu this article suchen.

+0

Verwenden Sie 'snprintf (str, sizeof (str),"% d ", i);' obwohl Pufferüberlauf Chance sind weniger. – sameerkn

+0

@sameerkn, bitte teilen Link zu einer Bibliothek, wo Sie gefunden 'snprintf' Funktion mit vorgestellten Prototyp – Sergey

+0

Ich bin mir nicht sicher, aber in muy Fall ist für die Firmware, ich möchte die Zeichenfolge über die serielle Schnittstelle senden, snprintf ich denke es funktioniert in diesem Fall nicht .... – user3278790

0

Verwenden sprintf mit %u Format für unsigned int:

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