Convierta el código de color hexadecimal en valor hexadecimal REAL en PHP
Frecuentes
Visto 868 veces
5 Respuestas
2
$color = '#fda80d';
$color = hexdec(substr($color, 1));
// Prove it
echo $color == 0xfda80d ? "yes" : "failed";
contestado el 22 de mayo de 12 a las 19:05
Esto también pasará un ===
lo cual es interesante Supongo que PHP también convierte números hexadecimales a dec para comparar tipos. ¿Tal vez se ve solo como un número en lugar de un cierto tipo de número? - afuzzyllama
En realidad, el resultado es un int, 16623629. Pero ambos $color === 16623629
y $color === 0xfda80d
son lo mismo. - fluir libremente
1
El siguiente código muestra que PHP almacena números en base 10, pero puede hacer operaciones matemáticas con el número en cualquier base. He creado una demostración a continuación que debería darle una mejor idea de cómo puede usar esto para comparar números en diferentes bases entre sí. También puedes hacer operaciones matemáticas con números en diferentes bases:
<?php
$color = '#fda80d'; //String color
$color = substr($color,1,6); //String color without the #
$color = '0x'.$color; //Prepend the 0x
$color += 0x00; //Force it to be a number
if($color === 0xfda80d) //Check the number is EXACTLY what we are expecting
echo 'Is hex<br />'; //This code is run, proving it is a hex ***number***
echo $color; //Outputs 16623629 (base 10)
#================================#
echo '<br /><br />';
$octal = 011; //Define an octal number
$octal += 01; //Add 1
if($octal === 012)
echo 'Is octal<br />';
echo $octal; //Outputs 10 (base 10)
#================================#
echo '<br /><br />';
$number = 12345; //Define a standard base 10 int
$number += 1; //Add 1 to the int
if($number === 12346)
echo 'Is base 10<br />';
echo $number; //Outputs 12346 (base 10)
#================================#
echo '<br /><br />';
if($color === 16623629 && $color === 077324015 && $color === 0xFDA80D)
echo '$color is base 10, octal and hex all at the same time<br />';
if($octal === 10 && $octal === 012 && $octal === 0xA)
echo '$octal is base 10, octal and hex all at the same time<br />';
if($number === 12346 && $number === 030072 && $number === 0x303A)
echo '$number is base 10, octal and hex all at the same time';
?>
Salidas:
es hexadecimal
16623629
es octal
10
es base 10
12346
$color es base 10, octal y hexadecimal, todo al mismo tiempo
$octal es base 10, octal y hexadecimal, todo al mismo tiempo
$number es base 10, octal y hexadecimal, todo al mismo tiempo
Puede verificar un número de base 10 (o hexadecimal/oct), por ejemplo 10
, es igual al número hexadecimal 0xA
sobre la marcha sin ninguna conversión:
<?php
if(10 === 0xA)
echo 'Success'; //This code is run
?>
contestado el 22 de mayo de 12 a las 19:05
0
Puede buscar en bin2hex() de PHP. http://php.net/manual/en/function.bin2hex.php
contestado el 22 de mayo de 12 a las 19:05
0
var_dump(dechex(hexdec(str_replace('#', '', '#fda80d'))))
es una cadena, por lo que probablemente no haya forma de que pueda obtener 0xfda80d
como lo escribiste.
contestado el 22 de mayo de 12 a las 19:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php colors hex or haz tu propia pregunta.
¿Estás tratando de convertir una cadena en un hexadecimal? Realmente no hay 'conversión' en PHP porque es 'sin tipo'. - afuzzyllama
sí, el código de color de la cadena a su equivalente hexadecimal. - btantlinger
Este planteamiento de « función de conversión podría ayudar. - Eric Shoberg