PHP 8.4.3 Released!

hexdec

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

hexdecWandelt von hexadezimal zu dezimal um

Beschreibung

hexdec(string $hex_string): int|float

Gibt die dezimale Entsprechung der in hexadezimaler Darstellung angegebenen Zahl hex_string zurück. Die Funktion hexdec() wandelt eine hexadezimale Zeichenkette in eine Dezimalzahl um.

hexdec() ignoriert alle nicht hexadezimal kodierten Zeichen (0-9 a-f) in hex_string. Von PHP 7.4.0 an ist die Übergabe jeglicher ungültiger Zeichen missbilligt.

Parameter-Liste

hex_string

Die umzuwandelnde hexadezimale Zeichenkette.

Rückgabewerte

Dezimaldarstellung von hex_string.

Changelog

Version Beschreibung
7.4.0 Die Übergabe ungültiger Zeichen löst nun einen Deprecation-Hinweis aus. Das Ergebnis wird weiterhin so berechnet, als würden die ungültigen Zeichen nicht existieren.

Beispiele

Beispiel #1 hexdec()-Beispiel

<?php
var_dump
(hexdec("See"));
var_dump(hexdec("ee"));
// both print "int(238)"

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

Anmerkungen

Hinweis:

Die Funktion kann nun auch Werte umwandeln, die zu groß für den Typ int der jeweiligen Plattform sind, das Ergebnis wird dann als float zurückgegeben.

Siehe auch

  • dechex() - Wandelt von dezimal zu hexadezimal um
  • bindec() - Wandelt von binär zu dezimal um
  • octdec() - Wandelt von oktal zu dezimal um
  • base_convert() - Wandelt einen numerischen Wert zwischen verschiedenen Zahlensystemen um

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