Int variable in ein char arry kopieren
Hi,
ich arbeite gerade an einem Mikrocontroller Projekt und scheitere gerade daran eine int Variable in ein char array zu kopieren. Das Problem ist, dass ich nicht weiß wie lang das int sein wird und ich daher keine Schleife zum Kopieren machen kann.
Hat jemand einen Tip?
void TIM2_IRQHandler(void)
{
sek++;
unsigned char zeit;
char buffer[6];
int Bit4;
Bit4= GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3);
if(Bit4==1)
{
}
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
Es geht darum sek in Buffer zu speichern. Das aber Stelle für Stelle, da mir sonst beim Senden der Wert in Ascii umgewandelt wir
ich arbeite gerade an einem Mikrocontroller Projekt und scheitere gerade daran eine int Variable in ein char array zu kopieren. Das Problem ist, dass ich nicht weiß wie lang das int sein wird und ich daher keine Schleife zum Kopieren machen kann.
Hat jemand einen Tip?
void TIM2_IRQHandler(void)
{
sek++;
unsigned char zeit;
char buffer[6];
int Bit4;
Bit4= GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3);
if(Bit4==1)
{
}
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
Es geht darum sek in Buffer zu speichern. Das aber Stelle für Stelle, da mir sonst beim Senden der Wert in Ascii umgewandelt wir
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 208175
Url: https://administrator.de/contentid/208175
Ausgedruckt am: 28.03.2024 um 17:03 Uhr
8 Kommentare
Neuester Kommentar
Hallo rubberman,
die sachen sollten jawohl ein klacks sein. Entweder er addiert die 48, oder er läast es einfach richtig casten.
Er braucht ja auch nicht direkt in sein Array schreiben. Er könnte ja auch erstmal eine Schleife machen, um zu sehen wie oft er "durch 10" dividieren kann.
Danach nochmal eine schleife die das dann in die entsprechende Stelle ins Array schreibt.
Gruß
Xearo
die sachen sollten jawohl ein klacks sein. Entweder er addiert die 48, oder er läast es einfach richtig casten.
Er braucht ja auch nicht direkt in sein Array schreiben. Er könnte ja auch erstmal eine Schleife machen, um zu sehen wie oft er "durch 10" dividieren kann.
Danach nochmal eine schleife die das dann in die entsprechende Stelle ins Array schreibt.
Gruß
Xearo
Hallo Julia1010,
davon ausgehend, dass sek unsigned oder zumindest >=0 ist:
Der größte Wert für einen unsigned int sollte 4294967295 sein, also 10-stellig + Nullterminierung macht 11 Elemente für deinen Puffer (oder gelten andere Typbreiten bei Mikrocontrollern?). Der Initialwert für buffer muss '\0' sein. Die for Schleife schiebt bei einem weiteren Zeichen jedes einzelne Element jeweils eine Stelle nach rechts ...
Grüße
rubberman
davon ausgehend, dass sek unsigned oder zumindest >=0 ist:
unsigned int sek = 1234567890;
char buffer[11] = {0};
unsigned int i = 0, cch = 0, q = sek;
do
{
for (i = ++cch; i > 0; --i) buffer[i] = buffer[i - 1];
buffer = '0' + (char)(q % 10);
q /= 10;
} while (q);
Grüße
rubberman