Hi,
Segue abaixo um simples header que pode ser utilizado para conversões de bases numéricas.
O header possui as seguintes funções:
dec2bin - Converte um valor de decimal para binírio;
dec2oct - Converte um valor de decimal para octal;
dec2hex - Converte um valor de decimal para hexadecimal;
bin2dec - Converte um valor de binírio para decimal;
oct2dec - Converte um valor de octal para decimal;
hex2dec - Converte um valor de hexadecimal para decimal.
Segue abaixo o código:
bases.h
Código:#include <math> #include <string> #include <cstdlib> #include <cstdio> // Conversão de decimal(sem sinal) para binírio char* dec2bin(unsigned long dec) { string bin; while(dec > 0){ bin += char(dec % 2 + '0'); dec /= 2;} return strrev((char*)bin.c_str()); } // Conversão de decimal para octal long dec2oct(unsigned long dec){ string oct; while(dec > 0) { oct += char(dec % 8 + '0'); dec /= 8;} return atoi(strrev((char*)oct.c_str())); } // Conversão de decimal (sem sinal) para hexadecimal char* dec2hex(unsigned long dec){ string hex; char v; while(dec > 0) { v = char(dec % 16 + '0'); if(v <= '9') hex+= v; else hex+= 'A' + (v-'0') % 10; dec /= 16;} return strrev((char*)hex.c_str()); } // Conversão de binírio para decimal unsigned long bin2dec(char * bin) { unsigned long dec=0; int i; for(i=0;i<strlen> 1) for(i = 0;i<strlen> 7) return 0; for(i = 0;i<strlen(aux);i++) dec = (dec * 8) + aux[i]-'0'; return dec; } //Conversão de hexadecimal para decimal unsigned long hex2dec(char * hex) { unsigned long dec=0; int i; for(i=0;i<strlen> 'F' || hex[i] > 'f') return 0; else if(hex[i] >= 'a' && hex[i] <= 'f') hex[i] = hex[i]-32; switch(hex[i]){ case 'A': dec = (dec*16)+ 10; break; case 'B': dec = (dec*16)+ 11; break; case 'C': dec = (dec*16)+ 12; break; case 'D': dec = (dec*16)+ 13; break; case 'E': dec = (dec*16)+ 14; break; case 'F': dec = (dec*16)+ 15; break; default: dec = (dec*16)+ hex[i]-'0'; } } return dec; }
Bye



Responder com Citação
