Forum: Compiler & IDEs unsigned char umwandeln


von michael (Gast)


Lesenswert?

hallo,

ich habe eine unsigned char variable, die als wer 0x01 enthaelt, diese
moechte ich an eine prozedur uebergeben, der ich als parameter sonst
werte der form "hallo welt" uebergebe, wie kriege ich das hin, das
der korrekt die 0x01 uebergibt ohne error usw., mit casten auf unsigned
char* habe ich es versucht, geht alles nicht, ich bin zu bloed dazu

von Jörg Wunsch (Gast)


Lesenswert?

sprintf(), itoa()

von tenner (Gast)


Lesenswert?

void foo( unsigned char* str );

void main() {
unsigned char wert = 0x01;
foo( &wert );
}

void foo( unsigned char* str ) {
 unsigned char wert = *str;
 printf( "\n %d \n", wert );
}

von KoF (Gast)


Lesenswert?

void reverse(char str[])
{
    int c, i, j;
    for(i = 0,j = strlen(str)-1; i < j; i++, j--)
    {
        c = str[i];
        str[i] = str[j];
        str[j] = c;
    }
}

void IntToString(char str[], int value)
{
    int i, sign;

    if((sign = value) < 0 )
    {
        value = -value;
    }
    i = 0;
    do
    {
        str[i++] = value %10 + '0';
    }
    while((value /= 10) >0);
    if (sign < 0)
    {
        str[i++] = '-';
    }
    str[i] = '\0';
    reverse(str);
}

nicht vergessen, string.h zu include (für strlen())!

von Jörg Wunsch (Gast)


Lesenswert?

Erstens macht das die Sache nur dezimal (nicht hex), zweitens ist es
eine umständliche Reimplementierung von itoa().

Wenn Platz kein Problem ist, ist sprintf() das Einfachste.  Wenn Platz
ein Problem ist, würde ich mir die Quelle von itoa() nehmen und sie
auf hex umstricken.

von martin Raffelsieper (Gast)


Lesenswert?

Hallo, Jörg,

welche header datei muss man den einbinden, um itoa(), sprintf() etc zu
nutzen. in den unter c:\Programme\ATMEL\WinAVR\avr\include\avr\
vorhandenen Header dateine finde ich keine entsprechende Deklaration.
Sicher Braucht es auch noch eine lib zu linken dazu?


Gruß Martin

von Jörg Wunsch (Gast)


Lesenswert?

sprintf() -> #include <stdio.h>
itoa()    -> #include <stdlib.h>

von Martin Raffelsieper (Gast)


Lesenswert?

itoa() funktioniert wie erwartet prima, es wird auch brav der
nullbegrenzer angehängt, und es funktioniert auch mit allerlei Radixen,
etwa mit 2, mit 10, mit 16 und auch mit 17!!.

guuuuuut

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.