Como decodificar un hexadecimal en valor ordinario?

Iniciado por WHK, 5 Noviembre 2014, 02:28 AM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Hola, tengo este valor en hexadecimal:

CitarE8 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:
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 :)

engel lex

la forma más facil de convertir de decimal a hexa es por divisiones

algo como

//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
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...

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Bundor

#2
Cita de: WHK en  5 Noviembre 2014, 02:28 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.