mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BIN TO HEX


Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich möchte einen Binärzahl z.B. 10101100 in eine dezimale Zahl
umwandeln. WIe könnte man dies in ANSI C realisieren?

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss michr korrigieren ich meine von Binär in Dezimalzahl

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
??? In welchem Zusammenhang???

Irgendwie verstehe ich Dein Problem nicht...

Autor: Karin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eigentlich gibst Du im Quellcode an:

int k = b10101100;

schon hat k den Wert 172

wenn deine BinZahl als String vorliegt,

dann

int i, value;
int nLen;
char[9] s;
strcpy(s, "10101100");
nLen = strlen(s)
for (i = 0; i < nLen; i++) {
   value += ('1' == s[i]) ? (1 << i) : 0;
}

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> eigentlich gibst Du im Quellcode an:
> int k = b10101100;

Das ist kein C; diese Notation ist eine seltene inkompatible
Erweiterung weniger Compilerhersteller.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

#define B8(y)   ( (0##y       &   1) \
                | (0##y >>  2 &   2) \
                | (0##y >>  4 &   4) \
                | (0##y >>  6 &   8) \
                | (0##y >>  8 &  16) \
                | (0##y >> 10 &  32) \
                | (0##y >> 12 &  64) \
                | (0##y >> 14 & 128) )

unsigned char i = B8(10101100);



Peter

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mit diesen Angaben nichts anfangen.
Ich habe die Binär Wert z.B. 1010 in einem String drin.
Jetzt weiss ichhalt nur nicht wie da der Algorythmus geht damit ich
dies in eine Dez Zahl umwandeln kann.

Autor: Wegstabenverbuchsler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Alexander
Die Antwort dazu hat doch schon Karin 2 Beiträge weiter oben gegeben
...

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja den Code von Karin habe ich nicht verstanden.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> eigentlich gibst Du im Quellcode an:
>> int k = b10101100;

> Das ist kein C; diese Notation ist eine seltene inkompatible
> Erweiterung weniger Compilerhersteller.

Selten? Ich habe noch kein Compiler gehabt, der das nicht konnte.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder so:
unsigned int getbin( unsigned char *s ){
  unsigned int val = 0;
  unsigned char i;
  while( (i = *s++ - '0') <= 1 )
    val += val + i;
  return val;
}

Peter

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benötige nur eine Funktion mit der ich z.B.
den Binär Wert 1010 in eine Dez Zahl umwandeln kann. So das ich dann
den Wert 10 sehen kann.

Autor: Martin Jangowski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die steht genau ein Beitrag über Deinem Gejammer. Lesen (und C) lernen!

Martin

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int val;

val = 0b11111111;
printf("\r\n%d", val);

liefert als Ausgabe
255

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin Jangowski

Martin, man kann dieses seltsame Verhalten immer wieder in diesem Forum
sehen. Einer stellt eine Frage, die danach riecht, er haette seine
Hausaufgaben nicht gemacht und moechte nun Hilfe von anderen, dann
kommt einer und watscht ihn dafuer ab. Mal angenommen, der Fragesteller
bemueht sich tatsaechlich und kapierts trotzdem nicht, ist dieses
Verhalten dann wirklich angemessen ?

Wenn einer nicht antworten will, dann soll er es lassen und nicht den
Herrn Oberlehrer spielen, ok ?

just my 0,5 Euro

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Alexander

Verstehe ich das richtig ? Dein Eingabewert ist ein normaler (null
termininierter) C-String a la "0101" und das Ergebnis soll wieder ein
C-String sein, der die Dezimalzahl enthaelt (= "5") ? Oder soll die
Funktion doch lieber einen integer (= 5) zurueckgeben ?

   Daz

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.