Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: WHK en 5 Noviembre 2014, 02:28 am



Título: Como decodificar un hexadecimal en valor ordinario?
Publicado por: WHK en 5 Noviembre 2014, 02:28 am
Hola, tengo este valor en hexadecimal:

Citar
E8 03 00 00

Se que equivale a 1000 en número natural, pero me gustaría saber como llegar hasta este número.

Estuve leyendo y no se me da muy bien el manejo de bytes por eso me gustaría saber cuales son las conversiones ordinarias para poder llegar a este número, por ejemplo decir que es una cadena de carácteres en hexadecimal que hay que pasar a bytes y luego a decimal y luego a ascii... algo así, entonces yo podré traducir eso en lenguaje de programación utilizando funciones nativas.

Necesito convertir este valor hexadecimal en un valor normal y un valor normal a hexadecimal, necesito hacer esto en java, php y javascript :P , tampoco busco que alguien me lo haga todo, solo necesito entender como procesar estos datos para poder implementarlo donde sea.

La función original en java que tengo en mi poder es esta:
Código:
private long toNumeric(byte[] buffer, int size)
    {
        long value = 0;
        for (int i=0; i < size; i++)
        {
            value += ((long) buffer[i] & 0xffL) << (8 * i);
        }
        return value;
    }

La cual ya me puede convertir un array de bytes en numero natural, pero ahora necesito crear una función inversa donde le de un valor numérico y me retorne un string con la cadena en hexadecimal, y como dije antes, no busco que alguien me haga la función, pero si me gustaría entender como crearla para poder implementarla.

Muchas gracias :)


Título: Re: Como decodificar un hexadecimal en valor ordinario?
Publicado por: engel lex en 5 Noviembre 2014, 05:30 am
la forma más facil de convertir de decimal a hexa es por divisiones

algo como
Código:
//numero es el valor entero a convertir
string hexa
mientras(numero!=0){
  hexa = convertir_a_letra(numero % 16)//retorna un char del 0 al F según el valor sea del 0 al 15 + hexa
  numero /= 16
  si(numero < 16){
     hexa += convertir_a_letra(numero)
     numero = 0//para salir del ciclo
  }
}

la ejecucion seria algo
Código:
numero = 1235
-----------

numero != 0 ? si, continuar
---ciclo inicio----
1235 modulo de 16 = 3
3 a char = 3
hexa = 3
numero = 77
numero < 16 ? no
---fin ciclo---

numero != 0 ? si, continuar
---ciclo inicio----
77 modulo de 16 = 13
13 a char = D
hexa = D3
numero = 4
numero < 16 ? si
4 a char 4
hexa = 4D3
numero = 0
---fin ciclo---

numero != 0 ? no, fin


creo que ese es el motodo más simple...



Título: Re: Como decodificar un hexadecimal en valor ordinario?
Publicado por: Minusfour_cierralo_o_baneamefull en 5 Noviembre 2014, 08:13 am
Hola, tengo este valor en hexadecimal:
E8 03 00 00
Se que equivale a 1000 en número natural, pero me gustaría saber como llegar hasta este número.

Edito: estaba al revés sería 3E8.

Como dice engel mola.