Forum: Mikrocontroller und Digitale Elektronik BIN TO HEX


von Alexander (Gast)


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?

von Alexander (Gast)


Lesenswert?

Ich muss michr korrigieren ich meine von Binär in Dezimalzahl

von Unbekannter (Gast)


Lesenswert?

??? In welchem Zusammenhang???

Irgendwie verstehe ich Dein Problem nicht...

von Karin (Gast)


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;
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> eigentlich gibst Du im Quellcode an:
> int k = b10101100;

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

von Peter Dannegger (Gast)


Lesenswert?

1
#define B8(y)   ( (0##y       &   1) \
2
                | (0##y >>  2 &   2) \
3
                | (0##y >>  4 &   4) \
4
                | (0##y >>  6 &   8) \
5
                | (0##y >>  8 &  16) \
6
                | (0##y >> 10 &  32) \
7
                | (0##y >> 12 &  64) \
8
                | (0##y >> 14 & 128) )
9
10
unsigned char i = B8(10101100);


Peter

von Alexander (Gast)


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.

von Wegstabenverbuchsler (Gast)


Lesenswert?

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

von Alexander (Gast)


Lesenswert?

Ja den Code von Karin habe ich nicht verstanden.

von Jens (Gast)


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.

von Peter Dannegger (Gast)


Lesenswert?

Oder so:
1
unsigned int getbin( unsigned char *s ){
2
  unsigned int val = 0;
3
  unsigned char i;
4
  while( (i = *s++ - '0') <= 1 )
5
    val += val + i;
6
  return val;
7
}

Peter

von Alexander (Gast)


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.

von Martin Jangowski (Gast)


Lesenswert?

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

Martin

von Jens (Gast)


Lesenswert?

1
int val;
2
3
val = 0b11111111;
4
printf("\r\n%d", val);

liefert als Ausgabe
1
255

von The Daz (Gast)


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

von The Daz (Gast)


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

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.