Einzelnen Beitrag anzeigen
Alt 02.10.2003, 13:44   #5
werner_q
Veteran
 
Registriert seit: 17.05.2001
Alter: 57
Beiträge: 299


Standard Aber ich will mal nicht so sein ...

Sei v die Integer-Variable, dann ist

BCD_Wert = (v And 61440) / 4096 & (v And 3840) / 256 & (v And 240) / 16 & (v And 15)

wobei x and y in diesem Fall bitweise maskiert (so nennt man das), d.h. v and 61440 maskiert alle ausser die obersten 4 Bit aus, v and 3840 maskiert aller ausser Bit 8 bis 11 und so weiter. (61440Dez = 1111 0000 0000 0000Bin, 3840Dez = 0000 1111 0000 0000, etc.)

Man könnte das auch arithmetisch lösen (durch 16er Potenzen dividieren, Rest bestimmen ...) ist aber umständlich und dauert wesentlich länger (kommt auch auf den Compiler an).

Sei v ein String, der eine 4-stellige BCD-Zahl darstellt, dann ist

Int_Wert = Mid(v, 1, 1) * 4096 + Mid(v, 2, 1) * 256 + Mid(v, 3, 1) * 16 + Mid(v, 4, 1)


Das Ganze gilt natürlich nur für 4-stell. BCD - bzw. 16bit Integer - Zahlen.
werner_q ist offline   Mit Zitat antworten