16 bit hexagonal de conversi decimal en C

D

dayal

Guest
Hola, a tots, em sembla com per convertir les dades de 16 bits en un valor decimal utilitzant un codi C (no estic fent servir l'Assemblea) per al meu projecte, per la qual cosa pot algú dir com puc fer-ho, tot esperant resposta, gràcies Dayal
 
manera més ràpida seria utilitzar la resta. Nombre de 16 bits no és major que 65 mil (sense signar) o 32k (signat). que no són majors que 100.000 tkan [, tot el que heu de fer és un bucle en el qual fer el següent: 1. que sutract la var1 (en un principi hauria de ser 10000) del seu hexadecimal 2. s'afegeix al seu var1 DEC_1 (al principi s'utilitza per mostrar els 10.000, de 1000, i així successivament fins a l'1 de). 3. si hexadecimal <VAR1 => var1 = VAR1/10 (millor utilitzar una taula de recerca, ja que no requereix de la divisió) (pel que en el segon pas serà 1000, de 100, de 10 i finalment 1 [
 
Hola, què vols dir amb decimal en aquest sentit? Representació decimal de cadenes ASCII o dades BCD (decimal codificat en binari). La primera és acchieved per sprintf (funció de biblioteca), per als compiladors de moltes funcions addicionals d'aquest últim han C. Si no, vostè pot fer com es suggereix, o per el codi una mica més compacte, utilitzar C mòdul "%" de l'operador. Salutacions, Frank
 
però tingui en compte que: 1. sprintf utilitzarà com 2k del seu codi, i el bucle i publicat per sobre de ~ 100 bytes potser dos. mòdul es veu bé, però si el xip no és compatible amb la divisió de maquinari en el qual prendrà molt més temps d'aquesta manera, i probablement prengui més de codi en conseqüència 0x41 0x56 0x45!
 
Tot això és cert. Però suposo que sprintf () i l'aritmètica que s'utilitza de tota manera en un disseny no trivial. En realitat, depèn del disseny. Quan s'utilitza C, un ha d'aprendre que ofereix més de les quatre operacions fonamentals.
 
resultat unsigned char [6]; bin2ascii buit (sense signe int) {unsigned uc char; per (uc = 0; uc 10) {resultat [uc] = (unsigned char) (% de dades 10) + '0 '; uc- -, data = dades / 10;} if (! dades = 0) {resultat [uc] = dades + '0 ';} return;}
 
Hola Dayal, Si us plau, descrigui quin tipus de variables contenen els seus valors d'entrada i sortida. Un exemple de conversió també ajudaria a aclarir la seva pregunta. La seva línia d'assumpte esmenta hexagonal. Si voleu convertir una cadena ASCII acabada en zero, com "C31B" en un sencer sense signe que conté 49.947, a continuació, sscanf () podria fer això, però és una funció de biblioteca gran. Un escrit a mà hex-sèrie-a-sense signar-int funció seria petit i senzill, si això és la conversió que vostè necessita.
 

Welcome to EDABoard.com

Sponsor

Back
Top