mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Umwandlung Zahl -> Binärstring


Autor: Stefan Weßels (swessels)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

auf der Suche nach der Möglichkeit eine Zahl in einen String im 
Binärformat mit führenden Nullen umzuwandeln bin ich im Netz auf ein 
Codefragment gestossen, welches ich in eine Funktion integriert habe.

Ist das so in Ordnung oder sollte da etwas verbessert werden?
//ausgabe eines unsigned 8-Bit Integers als Binärstring
void u82str(char* s, uint8_t val) {
    for(uint8_t i = 0; i < 8; i++) {
        *s++ = (val & (1<<(7-i))) ? '1' : '0';
    }
    *s++ = '\0';
}
Danke für Eure Mühe.

Gruß,
Stefan

P.S.: Ich weiss dass s nicht vor einem Überlauf geschützt wird.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Prozessor keinen Barrel-Shifter hat, ist folgede Variante
besser:
void u82str(char* s, uint8_t val) {
    for(uint8_t i = 0; i < 8; i++) {
        *s++ = (val & (1<<7)) ? '1' : '0';
        val <<= 1;
    }
    *s++ = '\0';
}

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ++ in der letzten Zeile ist überflüssig, wird aber normalerweise vom
Compiler wegoptimiert.

Autor: Stefan Weßels (swessels)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

danke für die Infos!

Gruß,
Stefan

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.