Frage

Kann mir jemand erklären, wie BCD Hexadezimal? Zum Beispiel, wie kann ich konvertieren 98 (BCD) auf Hexadezimal. Danke.

War es hilfreich?

Lösung

Ich verstehe nicht ganz Ihre Frage, aber ich glaube, dass z.B. jemand gibt Ihnen eine Zahl 98 in BCD codiert, das wäre:

1001 1000

und Sie sollen bekommen:

62H

Was würde ich vorschlagen:

1) convert BCD-codierten Wert zu Dezimalwert (D)

2) convert D hexadezimalen Wert.

Je nachdem, welche Programmiersprache Sie wählen, wird diese Aufgabe leichter oder schwerer sein.

EDIT: In Java könnte es sein:

    byte bcd = (byte)0x98; // BCD value: 1001 1000

    int decimal = (bcd & 0xF) + (((int)bcd & 0xF0) >> 4)*10;

    System.out.println(
            Integer.toHexString(decimal)
    );

Andere Tipps

BCD ist eine Teilmenge von hexadezimal, so gibt es keine Konvertierung erforderlich - jeder gegebenen BCD-Wert ist identisch mit dem entsprechenden hexadezimalen Wert. Zum Beispiel ist '98' in BCD 10011000, die die gleichen wie 98 in hexadezimal

ist

Für jeden BCD codierten Wert (dh in einem int passen).

Iterative:

unsigned int bcd2dec(unsigned int bcd)
{
    unsigned int dec=0;
    unsigned int mult;
    for (mult=1; bcd; bcd=bcd>>4,mult*=10)
    {
        dec += (bcd & 0x0f) * mult;
    }
    return dec;
}

Rekursiv:

unsigned int bcd2dec_r(unsigned int bcd)
{
    return bcd ? (bcd2dec_r(bcd>>4)*10) + (bcd & 0x0f) : 0; 
}

würde ich eine Tabelle mit 256 Einträgen erstellen, Abbildung aller BCD-Bytes in ihre binäre Äquivalent; Sie können dann hex Druck Ihrer Programmiersprache verwenden.

Gehen Sie zwischen verschiedenen Kombinationen von Hex, Dezimal und Binär. Wenn Sie wissen, wie binäre funktioniert, dann sollten Sie leicht in der Lage sein BCD zu verwenden:

Hex  Dec  BCD
0    0    0000
1    1    0001
2    2    0010
3    3    0011
4    4    0100
5    5    0101
6    6    0110
7    7    0111
8    8    1000
9    9    1001
A   10    0001 0000 <-- notice that each digit looks like hex except it can only go to 9.
B   11    0001 0001
C   12    0001 0010
D   13    0001 0011
E   14    0001 0100
F   15    0001 0101

Wenn Sie diesen Teil davon nach unten kommen, sollen Sie in der Lage sein, teilt die Verwendung von 10 oder 10% eine Kombination zu finden, die Ihren BCD zu erzeugen. Da es nur 10 Kombinationen verwendet statt alle 16 Sie einige Informationen verlieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top