GeezerVison is showing www.php.net — PHP: hexdec - Manual
hexdec
(PHP 4, PHP 5, PHP 7, PHP 8) hexdec — Hexadecimal to decimal
Description
Returns the decimal equivalent of the hexadecimal number
represented by the hex_string argument.
hexdec() converts a hexadecimal string to a
decimal number.
hexdec() will ignore any non-hexadecimal
characters it encounters.
As of PHP 7.4.0 supplying any invalid characters is deprecated.
Parameters
hex_string
-
The hexadecimal string to convert
Return Values
The decimal representation of hex_string
Changelog
| Version |
Description |
| 7.4.0 |
Passing invalid characters will now generate a deprecation notice.
The result will still be computed as if the invalid characters did not exist.
|
Examples
Example #1 hexdec() example
<?php
var_dump(hexdec("ee")); // prints "int(238)"
var_dump(hexdec("a0")); // prints "int(160)"
?>
Example #2 hexdec() with Invalid Characters
<?php
var_dump(hexdec("See")); // print "int(238)"
var_dump(hexdec("that")); // print "int(10)"
?>
Notes
Note:
The function can convert numbers that are too large to fit into the platforms
int type, larger values are returned as float in
that case.
hafees at msn dot com ¶16 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
repley at freemail dot it ¶20 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.
|