J
Vierergruppen brauchste dafür nicht.
Es reicht, den String Char für Char durch zu gehen und entsprechend die einsen zu setzen:
unsigned char Bin2Dec(const char *bin_byte_charp)
{
/* Sollte ein Nullzeiger übergeben worden sein, 0 zurückleifern */
if (bin_byte_charp == NULL)
return 0;
/* Zu bearbeitender Rückgabewert. */
unsigned char dec_uchar = 0xFF;
/* Für jedes der 8 Bit den Buchstaben prüfen. */
for (unsigned char bitnummer_uchar = 0;bitnummer < 8;bitnummer_uchar++)
{
/* Wenn der Buchstabe einer Eins entspricht, das passende Bit setzen */
if (bin_byte_charp[bitnummer_uchar] == '1')
{
dec_uchar &= ~(0x02 << bitnummer_uchar);
}
}
return dec_uchar;
}
Achtung: Es ist zwei kleine fehler versteckt, die sich aber mit dem Verständnis für die Funktion einfach finden lassen.
[edit]Ausserdem hat die Funktion ein paar unschöne Angewohnheiten, wenn es nicht nur 0en und 1en sind die im String stehen. [/edit]