elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Convertir valor a base 16, resultados diferentes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Convertir valor a base 16, resultados diferentes  (Leído 3,535 veces)
:ohk<any>


Desconectado Desconectado

Mensajes: 1.744


Yo lo que quiero que me salga bien es la vida.


Ver Perfil WWW
Convertir valor a base 16, resultados diferentes
« en: 27 Marzo 2022, 13:05 pm »

Buenas a todos,

Tengo esta cadena que debo convertir a base 16.

000012345678920190113163721231000011101000000000100001

Usando Java con esta funcion:

Código
  1. System.Globalization.NumberStyles.HexNumber

Tengo este resultado:

8727F63A15F8976591FDDE5B387C5D015A29E06A1

Ahora bien, replicando lo mismo en PHP, al convertir el mismo valor a base 16 en PHP obtengo un resultado diferente:

303030303132333435363738393230313930313133313633373231323331303030303131313031303030303030303030313030303031

Y si este resultado le hago la conversion inversa tambien obtengo el resultado inicial.

¿Porqué pasa esto?

Porque la misma conversion en 2 lenguajes diferentes dan resultados diferentes?

Estoy haciendo algo mal?

Intente convertir usando estas funciones:

Código
  1.  

Incluso con esta funcion que encontre en internet:

Código
  1. private function strhex($string) {
  2.        $hexstr = unpack('H*', $string);
  3.        return array_shift($hexstr);
  4.    }
  5.  

Agradezco cualquier ayuda.

Saludos cordiales!


En línea

Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
:ohk<any>


Desconectado Desconectado

Mensajes: 1.744


Yo lo que quiero que me salga bien es la vida.


Ver Perfil WWW
Re: Convertir valor a base 16, resultados diferentes
« Respuesta #1 en: 27 Marzo 2022, 21:14 pm »

Bueno, lo he resuelto, por si les pasa en la vida aca dejo la solución.

1ro asegurarse que tienen habilitado el:

Código:
[bcmath]

bcmath.scale = 2

en el archivo php.ini

Después de eso usamos esta función:

Código
  1. /**
  2.      * @param $number
  3.      * @return string
  4.      */
  5.    private function dec2hex($number)
  6.    {
  7.        $hexvalues = array('0','1','2','3','4','5','6','7',
  8.            '8','9','A','B','C','D','E','F');
  9.        $hexval = '';
  10.        while($number != '0')
  11.        {
  12.            $hexval = $hexvalues[bcmod($number,'16')].$hexval;
  13.            $number = bcdiv($number,'16',0);
  14.        }
  15.        return $hexval;
  16.    }
  17.  

Lo llamamos así:

Código
  1. return strtoupper($this->dec2hex((string)$valor));
  2.  

Y problema solucionado.

Saludos!


En línea

Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Resultados de operacions con valor E-02
Programación Visual Basic
oJosLoCos 2 2,347 Último mensaje 20 Diciembre 2009, 20:08 pm
por BlackZeroX
ReadProcessMemory da resultados diferentes w7/XP
Programación C/C++
Nork 4 3,167 Último mensaje 5 Julio 2010, 13:32 pm
por Nork
Convertir decimal a diferentes bases
Programación C/C++
AxelP 3 4,991 Último mensaje 9 Marzo 2015, 16:32 pm
por rir3760
Tratar resultados de diferentes procesos en proceso parent
Programación C/C++
daphataz 0 1,640 Último mensaje 9 Mayo 2016, 17:39 pm
por daphataz
cifrado Java - PHP con resultados diferentes.
Programación General
turion 3 4,440 Último mensaje 9 Octubre 2016, 00:22 am
por 6hiii
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines