Aufbau BCD-Wert gepackt

Ein gepackter BCD-Wert ist nichts weiter als eine Gruppe von Nibbles (4-Bit-Gruppe), wobei jedes Nibble eine Dezimalstelle repräsentiert. Jedes Nibble kann als BCD einen Wert von 0 bis 9 annehmen. Gepackt bedeutet hierbei, dass zur Speicherung des Wertes 0-9 kein ganzes Byte verwendet wird, sondern nur 4 Bits (1 Nibble) wovon 2 in ein Byte passen (8 Bits).

16 Bit (4 Nibbles, 1 Nibble = 4 Bit)
HighByte LowByte
Bits 15-12 Bits 11-8 Bits 7-4 Bits 3-0
Tausender Hunderter Zehner Einer
8 Bit (2 Nibbles, 1 Nibble = 4 Bit)
Bits 7-4 Bits 3-0
Zehner Einer

Ausmaskieren der einzelnen Nibbles/Dezimalstellen

dim a as word
dim einer,zehner,hunderter,tausender as byte
 
a=BcdEnc(1234)
einer     = a and 0x000f
zehner    = (a and 0x00f0) >> 4
hunderter = (a and 0x0f00) >> 8
tausender = (a and 0xf000) >> 12

Umwandlung in lesbare Zahl

Einen BCD-Wert kann man recht simpel in eine lesbare Zahl umwandeln. Hierfür holt man sich das entsprechende Nibble und addiert den Wert mit dem ASCII-Wert des Zeichens „0“ (48).