BCD heisst das in jedem Byte zwei Dezimalziffern untergebracht sind.
Je vier Bit (ein Nibble) enthalten die Werte 0..9.
Delphi-Quellcode:
var
Value: Integer; // Zielwert
Source: array [0..5] of Byte; // Beispiel fuer die BCD Bytes
I: Integer;
begin
Value := 0;
for I := 0 to 5 do
begin
Value := Value * 10; // eine Ziffer links schieben
// oberes Nibble rausknipsen
Value := Value + Integer((Source[I] shr 4) and $F);
Value := Value * 10; // eine Ziffer links schieben
// unteres Nibble rausknipsen
Value := Value + Integer(Source[I] and $F);
end;
end;
Alles ohne Gewaehr, da hier eingetippt.
Es kann auch sein das du die Ziffern in umgekehrter Reihenfolge bekommst. Das muss man aus der Doku lesen oder ausprobieren.