16 bit Hex do desiatkovej prepočítací v C

D

dayal

Guest
Ahoj, všetkým, woul chcem previesť 16 bitov dát do desatinnou hodnotu pomocou kódu C (nie som v assembleri), pre môj projekt, tak môže mi niekto povedať, ako to môžem urobiť, čaká na odpoveď, vďaka Dayal
 
Najrýchlejší spôsob, ako by bolo použitie odčítanie. 16bit počet nie je väčší ako 65 tisíc (unsigned) alebo 32k (podpísané). sú väčšie než 100k tkané [, všetko, čo potrebujete urobiť, je cyklus, v ktorom postupujte takto: 1. ste sutract var1 (na začiatku je treba 10000) z HEX 2. Pridáte-var1 do DEC_1 (na začiatku je slúži na zobrazenie 10000 je, ako 1000 a tak ďalej, až 1 '). 3. Ak HEX <var1 => var1 = VAR1/10 (lepšie využitie vyhľadávací tabuľku, pretože to nevyžaduje delenie) (tak v druhom kroku to bude 1000, ako 100, do 10 a nakoniec 1 [
 
Dobrý deň, čo máte na mysli s desiatkovej v tomto smere? Desatinné ASCII reťazec zastúpenie alebo BCD (binárne kódované desiatkové) dáta. Prvým z nich je v acchieved sprintf () funkciu knižnice, pre druhú sériu kompilátorov C majú ďalšie funkcie. Ak nie, môžete si robiť, čo navrhol, alebo trochu kompaktnejší kód, využitie C modulo "%" operátor. S pozdravom, Frank
 
Ale byť vedomí toho, že: 1. sprintf bude používať ako 2k kódu, a slučka som vyslaný nad ~ 100 bytov len 2. modulo vyzerá dobre, ale ak čip nepodporuje rozdelenie na hardware to bude trvať oveľa dlhšie týmto spôsobom, a pravdepodobne trvať dlhšie kód vo výsledku 0x41 0x56 0x45!
 
To je všetko pravda. Ale verím, že sprintf () a počítanie sa používa rovnako vo netriviálne dizajn. V skutočnosti, záleží na prevedení. Pri použití C, mali by sme sa dozvedeli, že ponúka viac než štyri základné operácie.
 
unsigned char výsledok [6]; neplatné bin2ascii (unsigned int data) {unsigned char uc, pre (UC = 0; uc 10) {vysledok [uc] = (unsigned char) (data% 10) + 0 ", UC- -, data = data / 10;} if (! data = 0) {vysledok [zjednotenej komunikácie] = data + '0 ';} return;}
 
Ahoj Dayal, opíšte, aké typy premenných obsahuje vaše vstupné a výstupné hodnoty. Napríklad prevod by tiež pomôcť objasniť otázku. Váš predmet uvádza hex. Ak chcete previesť null zakončený ASCII reťazec ako "C31B" do unsigned int obsahujúce 49947, potom sscanf () môže urobiť, ale je to veľký knižničný funkcie. Ručne písaný hex-string-to-nepodpísané-int funkcia je však malý a jednoduchý, ak je to prevod, ktorý potrebujete.
 

Welcome to EDABoard.com

Sponsor

Back
Top