SoloCodigo
Programación General => Java => Mensaje iniciado por: josmicr en Domingo 19 de Agosto de 2007, 19:52
-
Alguien que tenga en codigo java algún algoritmo para convertir de hexadecimal a decimal! :comp:
-
/* EZEQUIEL 281176*/
public void hexadecimalDecimal(int num){
double deci =0;
int x = 0;
int acum = -1;
int tam=0;
String cadena = "";
int []vect = new int[99];
System.out.println("DIGITE EL NUMERO: ");
do{
acum++;
try {
vect[acum] = System.in.read();
} catch (IOException ex) {
}
}while (vect[acum] != 10); //El 10 es el ENTER
//Almacena cada caracter del vector en cadena, concatenando
for (int i=0;i<vect.length-1;i++){
if (vect == 10)
i = vect.length-1;
else if (vect==97)
vect=65;
else if (vect==98)
vect=66;
else if (vect==99)
vect=67;
else if (vect==100)
vect=68;
else if (vect==101)
vect=69;
else if (vect==102)
vect=70;
cadena = cadena+(char)vect;
}
System.out.println("El numero HEXADECIMAL digitado es ");
System.out.println(cadena); // Imprime cadena
// Se imprime los valores ascii de los carcateres del vector
for (int i=0;i<vect.length-1;i++){
if (vect== 10)
break;
else if(vect==48)
vect=0;
else if (vect==49)
vect=1;
else if (vect==50)
vect=2;
else if (vect==51)
vect=3;
else if (vect==52)
vect=4;
else if (vect==53)
vect=5;
else if (vect==54)
vect=6;
else if (vect==55)
vect=7;
else if (vect==56)
vect=8;
else if (vect==57)
vect=9;
else if (vect==65)
vect=10;
else if (vect==66)
vect=11;
else if (vect==67)
vect=12;
else if (vect==68)
vect=13;
else if (vect==69)
vect=14;
else if (vect==70)
vect=15;
else if (vect==97)
vect=10;
else if (vect==98)
vect=11;
else if (vect==99)
vect=12;
else if (vect==100)
vect=13;
else if (vect==101)
vect=14;
else if (vect==102)
vect=15;
tam++;
}
for (int i=tam-1; i>=0;i--){
if(vect < 16 && vect >=0){
deci = deci + vect *(Math.pow(16, x));
x++;
}
}
System.out.print("n ");
System.out.print("EL NUMERO DECIMAL ES: "+deci+ ", ");
System.out.print("n ");
}
-
Este código tiene un gran problema...Solo acepta Integer, por lo que si vas a ingresar 'A' tienes que hacerlo introduciendo su valor '10', es muy incómo y defectuoso. Toma valores de uno en uno...
package proyectoconversiones;
/* EZEQUIEL 281176*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HexadecimalDecimal {
public static void main (String []args){
BufferedReader entrada = new BufferedReader (new InputStreamReader (System.in));
//Declaramos el vector
int w = 0;
int numero =0, c =0;
double deci = 0;
int []vect = new int [12];
//Llenamos el vector
System.out.println("Llene el Vector");
for (int i =0; i<vect.length;i++){
System.out.println("Pulse el digito Hexadecimal " + i + " "); //+ 1 + Concatenar una variable
try{
numero= Integer.parseInt(entrada.readLine());
}catch (Exception ex){
System.out.println("Se produjo un ERROR");
i--;
}
if (numero>=0&&numero<16){
vect[c] = numero;
c++;
}
else {
System.out.println("ERROR: Digite solo entre 0 y 15, ...");
i--;
}
if (numero==22){
break;
}
}
//imprimimos numero Hexadecimal
System.out.println("Usted digitó el Número Hexadecimal: ");
System.out.print(" n ");
for (int i =0; i<c;i++){
System.out.print(vect + ", ");
}
for (int i =c-1; i>=0;i--){
deci = deci + vect *(Math.pow(16, w));
w++;
}
System.out.print("nn ");
System.out.print("Y su correspondiente numero decimal es: "+deci+ ", ");
System.exit(0);
}
}
-
Más facil aún, pero creo que para un nivel básico hay que construir paso a paso sus propias soluciones (digo, no utilizar lo que ya biene predeterminado). Pero igual, espero que les sirva este ejemplo...
Saludos!!!
package conversiones;
/* EZEQUIEL 281176 */
import java.io.*;
public class HexadecimalToDecimal{
public static void main(String[] args) {
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
String numero = " ";
int decimal = 0;
System.out.println("Digite el numero Hexadecimal: ");
try{
numero = entrada.readLine();
}catch (IOException ex) {System.out.println("Error: Digite solo numeros Hexadecimales...");
}catch (NumberFormatException ex) {System.out.println("Error: Digite solo numeros Hexadecimales...");
}
decimal = Integer.parseInt(numero,16);
System.out.println("El numero decimal es: "+ decimal);
}
}
-
LOL...