PHP 8.4.3 Released!

hexdec

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

hexdecHexadecimal para decimal

Descrição

hexdec(string $hex_string): int|float

Retorna o equivalente em decimal do número hexadecimal representado pelo argumento hex_string. hexdec() converte uma string hexadecimal para um número decimal.

hexdec() irá ignorar qualquer caractere não hexadecimal que encontrar. A partir do PHP 7.4.0 fornecer caracteres inválidos está defasado.

Parâmetros

hex_string

A string hexadecimal a ser convertida

Valor Retornado

A representação decimal de hex_string

Registro de Alterações

Versão Descrição
7.4.0 Passar caracteres inválidos agora irá gerar uma nota de defasagem. O resultado ainda será computado como se os caracteres inválidos não existissem.

Exemplos

Exemplo #1 Exemplo de hexdec()

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

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

Notas

Nota:

A função pode converter números que são longos demais para caber nos tipos int das plataformas, valores maiores são retornados como float neste caso.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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