hexdec

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

hexdec16 進数を 10 進数に変換する

説明

hexdec(string $hex_string): int|float

引数 hex_string により指定された 16 進数に 等価な 10 進数を返します。hexdec() は、16 進数を 表す文字列を 10 進数に変換します。

hexdec() は、16 進数以外の文字を一切無視します。 PHP 7.4.0 以降では、無効な文字を与えることは推奨されません。

パラメータ

hex_string

変換したい 16 進文字列。

戻り値

hex_string を 10 進で表した値を返します。

変更履歴

バージョン 説明
7.4.0 無効な文字を与えると、非推奨の警告が出るようになりました。 結果は不正な文字がなかったかのように計算されます。

例1 hexdec() の例

<?php
var_dump
(hexdec("See"));
var_dump(hexdec("ee"));
// 共に "int(238)" を出力

var_dump(hexdec("that")); // "int(10)" を出力
var_dump(hexdec("a0")); // "int(160)" を出力
?>

注意

注意:

この関数は、プラットフォームの int 型に収まらない大きな数も変換できます。 その場合、結果は float で返します。

参考

  • dechex() - 10 進数を 16 進数に変換する
  • bindec() - 2 進数 を 10 進数に変換する
  • octdec() - 8 進数を 10 進数に変換する
  • base_convert() - 数値の基数を任意に変換する

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 abovehex2RGB("#FF0", true) -> 255,255,0hex2RGB("#FF0", true, ":") -> 255:255:0
up
2
repley at freemail dot it
19 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