WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 01.10.2003, 21:22   #1
smile999
Newbie
 
Registriert seit: 22.08.2003
Beiträge: 6


Standard cb bcd nach integer wandel

kann mir jemand einen tip geben wie ich in vb bcd->integer und integer->bcd wandeln kann??????


danke im voraus
smile999 ist offline   Mit Zitat antworten
Alt 02.10.2003, 01:17   #2
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

bcd->integer:
Decimal bcd1
Integer int1

BCD sind binärcodiert: 4 Bit pro Zahl
Jetzt ist entscheidend, wieviele Bits die Zahl insgesamt hat.

Der Rest einer Division durch 16 ergibt die letzte (niedrigste) Dezimalziffer.

----------------------------------
Besser Rückfrage: Verstehst du, wie eine BCD aufgebaut ist?
Wenn ja, sollte die Programmierung kein Problem darstellen.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 02.10.2003, 12:44   #3
smile999
Newbie
 
Registriert seit: 22.08.2003
Beiträge: 6


Standard

sorry habs falsch formuliert


mein problem ist das in der 16-Bit integervariablen 4xbcd enthalten ist:

z.b.

bin: 0001|0001|0001|0001
ergibt bcd : 1111
integerwert : 4341
smile999 ist offline   Mit Zitat antworten
Alt 02.10.2003, 13:28   #4
werner_q
Veteran
 
Registriert seit: 17.05.2001
Alter: 57
Beiträge: 299


Standard

Bei mir kommt da 4369 raus ...
werner_q ist offline   Mit Zitat antworten
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
Alt 02.10.2003, 14:33   #6
smile999
Newbie
 
Registriert seit: 22.08.2003
Beiträge: 6


Reden

hi werner_Q

wennst die andere richtung auch so aussischüttelt wärs a hit

besten dank im voraus


smile999 ist offline   Mit Zitat antworten
Alt 02.10.2003, 15:10   #7
werner_q
Veteran
 
Registriert seit: 17.05.2001
Alter: 57
Beiträge: 299


Standard

Freut mich, wenn Du Dich freust ( ). Hinsichtlich der anderen Richtung - schau' genau !
werner_q ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:15 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag