PDA

View Full Version : Conversione Esandecimale


Luc@s
26-11-2003, 19:52
Come si fa la conversione HEX->DEC e viceversa??
Mi interessa prima come farlo io poi come farlo fare al C.



Tnk 10000000

|aura
26-11-2003, 20:32
qui trovi un programmino che lo fa in VB http://www.webngo.net/aspstuff/script/dec2hex.asp

questo invece lo fa in c ma è un po più generico perchè devi scegliere la base...
http://www.itis.mn.it/linux/terza/conversione.htm
e
http://www.itis.mn.it/linux/terza/conversione2.htm

se invece ti interessa solo come si fa a fare la conversione numerica vai qui:
http://a2.swlibero.org/a214.html

recoil
26-11-2003, 23:04
wow una tipa (dal nick sembrerebbe) nuova sul forum! :)

il tuo intervento è già completo, non c'è bisogno di aggiungere altro direi ;)

matpez
26-11-2003, 23:16
Originariamente inviato da recoil
wow una tipa (dal nick sembrerebbe) nuova sul forum! :)


:sofico:

|aura
27-11-2003, 00:09
mai fidarsi delle apparenze..
:Perfido:

:D

verloc
27-11-2003, 07:29
int a=16;
int b=17;


std::cout<<std::hex<<std::showbase<<a<<'\n';
std::cout<<b<<'\n';

per fare la funzione inversa:
adoperare come input intermedio uno stringstream dove riversare
la stringa scritta in esa quindi assegnare alla varialbile intera direttamente il contenuto dello stream con l'operatore >>.

Almeno credo :)

cionci
27-11-2003, 10:41
In C:

char exa[100];
sprintf(exa, "%X", numero_intero);

Poi se invece ti interessa l'algoritmo: c'è un algoritmo generico per la conversione da base alpha a base beta...

Luc@s
27-11-2003, 12:06
trovato l'algoritmo

3AB2 è equivalente a : 2 * 16 ^ 0 + 11 * 16 ^ 1 + 10 * 16 ^ 2 + 3 * 16 ^ 3,
quindi svolgendo i calcoli 15026 in decimale

cionci
27-11-2003, 12:13
Bravo... ;)

Luc@s
27-11-2003, 12:22
Originariamente inviato da cionci
Bravo... ;)

tnk!
E che l'algebra che ho per la verifica di domani mi ha aiutato.
Quindi anche x l'ottale è + o - cosi?

cionci
27-11-2003, 13:34
E' identico...cambia solo la base...

a2000
27-11-2003, 18:42
questa funzione (vedi allegato) converte da qualunque base a qualunque altra:


Function f_CnvBase(n1$, b1, b2)
aaa$ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

If b1 < 2 Or b1 > 62 Then f_CnvBase = "bad first base": Exit Function
n = 0
For k = 1 To Len(n1$)
a1 = InStr(aaa$, Mid$(n1$, k, 1)) - 1
If a1 < 0 Or a1 >= b1 Then f_CnvBase = "bad format number": Exit Function
n = n * b1 + a1
Next k

If b2 < 2 Or b2 > 62 Then f_CnvBase = "bad second base": Exit Function
Do While n > 0
a2 = n Mod b2
n = Int(n / b2)
n2$ = Mid$(aaa$, a2 + 1, 1) & n2$
Loop
f_CnvBase = n2$

End Function