Tengo un problema para entender la conversión hexadecimal en PHP.
Ahora tengo el numero -2.09
. Quiero convertirlo a hexa, pero la longitud del resultado debería ser 4. Por lo tanto, el resultado debería ser FFFE
, pero me da FFFFFFFE
en lugar.
¿Cuál es la función que se utilizará para darme solo 4 dígitos hexadecimales?
Actualmente estoy usando solo esta función para convertir:
dechex(-2)
Respuestas
0 para la respuesta № 1Si está completamente seguro de que solo necesitará 4 bytes para almacenar su número, puede usar substr
para recuperar la pieza que necesitas:
$a = dechex(-2);
=> "fffffffffffffffe"
substr($a, -4);
=> "fffe"
0 para la respuesta № 2
Un número negativo necesita más bits para almacenar su valor en versión hexadecimal, porque también -
signo debe ser almacenado.
Por lo tanto, no puede almacenar el número -2.09
en una representación hexadecimal de 4 longitudes, ni la -2
número:
Ejemplo:
echo dechex((float)-2.09);
echo "n";
echo dechex(-2);
Salida:
fffffffe
fffffffe