decimal til hex

Z

ZeleC

Guest
Hello guys
har arbejdet på hc11 og jeg ønsker at konvertere decimaltal indtastet af tastaturet til hex
så jeg har brug for en rutine for decimal til hex
nogen hjælp derude
THX på forhånd

 
decimal for hex>>> lol:)

at konvertere decimal for hex fra et tastatur>?
Så skal du bare læse byte den kypad input giver
det vil være i alt en underskrevet eller unsigned byte
som en hc11 er kun små stumper kerne

så i intervallet -127 for 127 til 00 - FF
hvis du vil også gerne læse den sande decimalværdi

så er det det samme .....som hvis du underskriver -127 - 127 for at give inden for rækkevidde i stedet 0-256
256 FF

nem ting svaret er der allerede
bare erklære som et usigneret byte og konvertere

 
Jeg ved, at der er nemt for én byte
Men hvad nu hvis jeg vil konvertere fra 2000 til hex

<img src="http://www.edaboard.com/images/smiles/icon_confused.gif" alt="Forvirret" border="0" />
 
Jeg tror, at han vil have noget andet.
Lad os antage, at vi har i tastaturet buffer noget som "123" (tre ASCII-tegn, eller en anden form for tastatur scancode) og vi er nødt til at konvertere dem til 0x7B i byte variabel.

C-sproget rutine er enkel, men jeg ved ikke, HC11 assembler.

 
HEY jeg brug for RUTINEMÆSSIG for et stort antal
Jeg kender gængse måde
2000 = 2 * 16 ^ 3 0 * 16 ^ 2 ....
MEN IM søgen efter en anden ONE
Måske en lettere måde at doesn't EATS TIL meget tid i UC
THX

 
Divider dit nummer ved 16 ^ 0 (1).Hvis resultatet er> 16 derefter opdele dit decimaltal med 16 ^ 1 (16).Hvis resultatet> 16 derefter opdele dit decimaltal med 16 ^ 2 (256).Hvis da resultatet er> 16 derefter opdele dit decimaltal med 16 ^ 3 (4096).Hvis resultatet er> 16 opdele dit decimaltal med 16 ^ 4 og så videre, indtil resultatet er <16.

For eksempel for 2000, kan du dele den med 16 ^ 2 (256).2000/256 = 7,8125.

Nu skal du tage hele den del af 7,8125 (7) og gange den med 16 ^ 2 (256): resultatet er 7 * 256 = 1792.

Subtrahere dette resultat fra 2000: 2000 - 1792 = 208.

Derefter dividere 208 med 16 ^ 1 (16): 208/16 = 13 (0xD hex).

Fratrække 13 * 16 fra 208: 208 til 208 = 0

Divider 0 af 16 ^ 0: 0 / 1 = 0

Det endelige resultat i hex er: 7D0 ((7 * 16 ^ 2) (13 * 16 ^ 1) (0 * 16 ^ 0))Prøv et andet eksempel med 10.001 decimaler

10001/16 ^ 3 = 2,44 ....(Hele værdi er 2)

2 * 16 ^ 3 = 819210001 - 8192 = 1809

1809/16 ^ 2 = 7,06 ...(Hele værdi er 7)

7 * 256 = 17921809-1792 = 17

17/16 ^ 1 = 1,06 ...(Hele værdi er 1)

1 * 16 ^ 1 = 1617-16 = 1

1 / 16 ^ 0 = 1 (Hele værdi er 1)Det endelige resultat er 0x2711 (hex værdi).

Ikke meget kompliceret ...

 
Desværre Zelec, dit sidste ankom indlæg mens jeg skrev mit ...

 
Zelec: Jeg kan ikke forstå en ting.
Du ønsker at bruge de numre på tastaturet for nogle interne beregninger, eller du blot ønsker at vise dem i hex.

Hvis du ønsker at bruge dem, så lad os antage, at du har tastekoder fra tastaturet i nogle buffer, der slutter med CR eller andre specialtegn.
For det første justere bytes i bufferen (i 99 procent er det en form for subtraktion).Du ønsker at have 0 til '0 ', 1 til '1' ...9 for '9 '.
Efter dette, gør blot en løkke og formere sig og tilføje bytes i bufferen fra (højre-1) til venstre ved magten i ti.

Lad os antage, at du har "12345 \ n" i bufferen.Så justere og i løkken formere og tilføjer:

5x1 4x10 3x100 2x1000 1x10000 osv.

Hvis du vil, behøver du ikke multiplikation.Du kan gøre det bare med ændringer og tilføjelser, og nogle mere sløjfer.Fordi, hvis du ønsker at gange med 10, det er (antal <<3) nummer nummer.

 
ZeleC skrev:

Hello guys

har arbejdet på hc11 og jeg ønsker at konvertere decimaltal indtastet af tastaturet til hex

så jeg har brug for en rutine for decimal til hex

nogen hjælp derude

THX på forhånd
 

Welcome to EDABoard.com

Sponsor

Back
Top