Base 16 Base-10 C

G

GrandAlf

Guest
Olen melko typerää, mutta ei näytä päätäni kierroksen tämä.Olen yrittänyt muuntaa Base 16 numeroa (kirjaimet AF käyttää) perustaa 10-kohti seuraavaa.

B16 0x47 = joulukuu 71.B16 0x16 = 22 joulukuu.B16 0x30 = joulukuu 48.B16 0x01 = 1 joulukuu Etc

Kukaan saanut rutiini ja tekee näin?.Kuten sanoin mitään B16 numeroiden sisällä hex merkkejä, kaikki ovat vakiona numerot.Vaikuttaa niin itsestään selvältä, mutta minulla on vain sokea piste tässä.Voi tietysti näy missään muodossa käyttäen printf, mutta tämä ei ole sitä, mitä olen sen jälkeen.Neuvoja eniten kiitollisena vastaan.

 
Kysymys ei ole selvää ollenkaan.Hex tai desimaaliluku on vain tulostettava esityksiä omien tietojen muotoja, jotka ovat aina binääri.Saada desimaalin edustusta merkkijono, sprintf () tai itoa () C-toimintoja voidaan käyttää.Jos sinulla on tarkoitettu eri edustus kuin tulostettava merkkijono tai sisäisen binäärimuodossa, sinun tulee määritellä se.

On tietenkin muodossa kuin BCD, jotka edustavat kaksinumeroisen desimaaliluku on 8 bittiä, mutta ei ole mitään käyttäjän viestin, että ehdottaa sitä.

Vain kertoa, mitä haluat saavuttaa?

 
muistaa
C-kieli voi ymmärtää määrä kaikissa muodossa eli Hex, desimaali-, binääri-, oktaali.te vain julistaa, että se, mutta kaikki tarkoittavat samaa
kuten
= 0x04; Hex 4
= 4; desimaalin 4
= 04; Oktaaliluku 4
= 0b100; binary 4

 
Ehkä en selittänyt itseäni kunnolla.Yritän ottaa numeerinen muuttuja (ei jouset), joka sisältää binaariluku edustus Hex useita, ja muuntaa tämän toiseen binaariluku edustaa desimaalilukuna.Nämä on aina numeerista tietoa, AF ei koskaan käytetä.

esim.
Hex 0-9 olisi sama desimaalin 0-9 tietenkin.O muuntaminen.

Jos hex tulo on 30 desimaalin pitäisi tulla ulos kuin 48.Sama muita esimerkkejä viestisi.

En voi tietenkin tehdä muuntotaulukko, mutta kaava olisi paljon parempi vaihtoehto.Effectivly Hex desimaalimuotoon ilman kirjaimia.Toivottavasti tässä on järkeä.

 
GrandAlf,
tämä on sellainen asia, etsit niin yleinen ajatus
Koodi:Int HexToDec (int nNumToConvert) / / recursive FN

(

Int nConverted = 0, / / Vapaa tässä laskennassa

Int nQuotient;

Int nRemainder;nQuotient = (nNumToConvert / 16);

nRemainder = (nNumToConvert% 16);/ / Voi käyttää ternary operaattori "?"
mutta tämä "jos ... muu" on selkeämpi.

jos (nQuotient = 0)

(

nConverted = nRemainder;

)

muuten

(

nConverted = (16 * HexToDec (nQuotient) nRemainder);

)

return (nConverted);

)

 
Tämä näyttää askel oikeaan suuntaan, on leikkiä sen kanssa.Paljon kiitoksia input.

 
Quote:

Jos hex tulo on 30 desimaalin pitäisi tulla ulos kuin 48.
Sama muita esimerkkejä viestisi.
 
Eivät vain siirrä 5 luku hex numeroa, tai muuta asiaa muuttujien pitkiä.

DOH!Tämä voi olla yksi vastaus, minä vain juoksin sille LCC ..

Koodi:/ * Muunna Hex muotoiltu syöttää merkkijonon sen Decimal

on hyväksyttävä kaikki voimassa Hex merkkijono * /int main ()

(

int a;while (1)

(

printf ( "Anna hex numero:");

scanf ( "% x", &), / / hex muotoiltu input string

printf ( "on sama kuin Decimal% d \ n \ n"); / / DEC muodossa lähtö

)

return 0;

)

 
Se oli peräisin koodinpätkä, että Otin.Tarkastellaan uudelleen, tietysti se on BCD.En voi uskoa, kaipasin sitä.Vain muutama päivä minulla ei ole minun aivot vaihteen.Monet kiitokset teille molemmille laskemisesta minut oikeaan suuntaan.

 
Just uudelleen lukemaan selitys, ei ihme, olen aiheuttanut sekaannusta.Luonnollisesti 0x30 on sama kuin 48 jne. Mitä olen itse yrittänyt päästä muuttui hex numeroa desimaalin tarkkuudella, mutta pitää sama arvo.Niin esimerkiksi 0x47 (01000111) todella tullut joulukuu 47 (00101111).Se on itse asiassa päinvastainen jälkeen.

/ / Muuntaa BCD 1 tavu on HEX 1 tavu
//-------------------------------
unsigned char BCD2HEX (unsigned int BCD)
(
unsigned char temp;
temp = ((BCD>>

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Viileä" border="0" />

* 100) | ((BCD>> 4) * 10) | (BCD & 0x0f);
return temp;
)

Yrittää tehdä Hex on BCD sijaan, eikä aivan mitään väärää.Anteeksi, eilen oli vain yksi niistä kiireistä päivää, ei ajatella loogisesti lainkaan.Lisätään 2 minuuttia:Smiley face olisi 8!

 

Welcome to EDABoard.com

Sponsor

Back
Top