mikrocontroller.net

Forum: Compiler & IDEs unsigned char umwandeln


Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf(), itoa()

Autor: tenner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 );
}

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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())!

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf() -> #include <stdio.h>
itoa()    -> #include <stdlib.h>

Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.