PHPerKaigi 2025

hexdec

(PHP 4, PHP 5, PHP 7, PHP 8)

hexdecHexadecimal a decimal

Descripción

hexdec(string $hex_string): number

Devuelve el equivalente decimal del número hexadecimal representado por el argumento cadena_hex. hexdec() convierte un string hexadecimal a un número decimal.

hexdec() ignora cualquier caracter no hexadecimal que encuentre.

Parámetros

hex_string

El string hexadecimal a convertir

Valores devueltos

La representación decimal de hex_string

Ejemplos

Ejemplo #1 Ejemplo de hexdec()

<?php
var_dump
(hexdec("See"));
var_dump(hexdec("ee"));
// ambos imprimen "int(238)"

var_dump(hexdec("that")); // imprime "int(10)"
var_dump(hexdec("a0")); // imprime "int(160)"
?>

Notas

Nota:

Esta función puede convertir números que son demasiado grandes para caber en el tipo integer de cada plataforma, devolviendo en este caso un valor de tipo float para los valores mayores.

Ver también

add a note

User Contributed Notes 2 notes

up
32
hafees at msn dot com
14 years ago
Use this function to convert a hexa decimal color code to its RGB equivalent. Unlike many other functions provided here, it will work correctly with hex color short hand notation.

Also, if a proper hexa decimal color value is given (6 digits), it uses bit wise operations for faster results.

For eg: #FFF and #FFFFFF will produce the same result

<?php
/**
* Convert a hexa decimal color code to its RGB equivalent
*
* @param string $hexStr (hexadecimal color value)
* @param boolean $returnAsString (if set true, returns the value separated by the separator character. Otherwise returns associative array)
* @param string $seperator (to separate RGB values. Applicable only if second parameter is true.)
* @return array or string (depending on second parameter. Returns False if invalid hex color value)
*/
function hex2RGB($hexStr, $returnAsString = false, $seperator = ',') {
$hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // Gets a proper hex string
$rgbArray = array();
if (
strlen($hexStr) == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster
$colorVal = hexdec($hexStr);
$rgbArray['red'] = 0xFF & ($colorVal >> 0x10);
$rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
$rgbArray['blue'] = 0xFF & $colorVal;
} elseif (
strlen($hexStr) == 3) { //if shorthand notation, need some string manipulations
$rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
$rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
$rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
} else {
return
false; //Invalid hex color code
}
return
$returnAsString ? implode($seperator, $rgbArray) : $rgbArray; // returns the rgb string or the associative array
} ?>

OUTPUT:

hex2RGB("#FF0") -> array( red =>255, green => 255, blue => 0)
hex2RGB("#FFFF00) -> Same as above
hex2RGB("#FF0", true) -> 255,255,0
hex2RGB("#FF0", true, ":") -> 255:255:0
up
2
repley at freemail dot it
18 years ago
From color to color to ...... to color with fade effect. Good for dynamic bar chart.

<?php
//MultiColorFade(array hex-colors, int steps)
function MultiColorFade($hex_array, $steps) {

$tot = count($hex_array);
$gradient = array();
$fixend = 2;
$passages = $tot-1;
$stepsforpassage = floor($steps/$passages);
$stepsremain = $steps - ($stepsforpassage*$passages);

for(
$pointer = 0; $pointer < $tot-1 ; $pointer++) {

$hexstart = $hex_array[$pointer];
$hexend = $hex_array[$pointer + 1];

if(
$stepsremain > 0){
if(
$stepsremain--){
$stepsforthis = $stepsforpassage + 1;
}
}else{
$stepsforthis = $stepsforpassage;
}

if(
$pointer > 0){
$fixend = 1;
}

$start['r'] = hexdec(substr($hexstart, 0, 2));
$start['g'] = hexdec(substr($hexstart, 2, 2));
$start['b'] = hexdec(substr($hexstart, 4, 2));

$end['r'] = hexdec(substr($hexend, 0, 2));
$end['g'] = hexdec(substr($hexend, 2, 2));
$end['b'] = hexdec(substr($hexend, 4, 2));

$step['r'] = ($start['r'] - $end['r']) / ($stepsforthis);
$step['g'] = ($start['g'] - $end['g']) / ($stepsforthis);
$step['b'] = ($start['b'] - $end['b']) / ($stepsforthis);

for(
$i = 0; $i <= $stepsforthis-$fixend; $i++) {

$rgb['r'] = floor($start['r'] - ($step['r'] * $i));
$rgb['g'] = floor($start['g'] - ($step['g'] * $i));
$rgb['b'] = floor($start['b'] - ($step['b'] * $i));

$hex['r'] = sprintf('%02x', ($rgb['r']));
$hex['g'] = sprintf('%02x', ($rgb['g']));
$hex['b'] = sprintf('%02x', ($rgb['b']));

$gradient[] = strtoupper(implode(NULL, $hex));
}
}

$gradient[] = $hex_array[$tot-1];

return
$gradient;
}
//end MultiColorFade()

//start test
$multi_hex_array = array();
$multi_hex_array[] = array('FF0000','FFFF00');
$multi_hex_array[] = array('FF0000','FFFF00','00FF00');
$multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF');
$multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF','0000FF');
$multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF','0000FF','000000');
$multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF','0000FF','000000','FFFFFF');

foreach(
$multi_hex_array as $hex_array){

$totcolors = count($hex_array);
$steps = 44;

$a = MultiColorFade($hex_array, $steps);
$tot = count($a);

$table = '<table border=1 width="300">' . "\n";

for (
$i = 0; $i < $tot; $i++){
$table .= ' <tr><td bgcolor="' . $a[$i] . '">' . ($i+1) .'</td><td><pre>' . $a[$i] . '</pre></td></tr>' . "\n";
}

$table .= '</table><br /><br />';

echo
'<br />Demanded steps = ' . $steps . '<br />';
echo
'Returned steps = ' . $tot;

if(
$steps == $tot){
echo
'<br />OK.' . $steps . ' = ' . $tot . '<br />';
}else{
echo
'<br /><span style="color:#FF0000">FAILED! Demanded steps and returned steps are NOT equal!: ' . $steps . ' != ' . $tot . '</span><br />';
}

echo
$table;

}
//end test
?>

Repley.
To Top