hexdec

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

hexdec十六进制转换为十进制

说明

function hexdec(string $hex_string): int |float

返回与 hex_string 参数所表示的十六进制数等值的的十进制数。hexdec() 将一个十六进制字符串转换为十进制数。

hexdec() 会忽略它遇到的任意非十六进制的字符。自 PHP 7.4.0 起,弃用使用任何无效字符。

参数

hex_string

要转换的十六进制的字符串

返回值

hex_string 十进制的表示

更新日志

版本 说明
7.4.0 传递任何无效字符现在将生成弃用通知。但仍会计算结果,就好像无效字符不存在一样。

示例

示例 #1 hexdec() 示例

<?php
var_dump(hexdec("ee")); // prints "int(238)"
var_dump(hexdec("a0")); // prints "int(160)"
?>

示例 #2 hexdec() 包含无效字符

<?php
var_dump(hexdec("See")); // print "int(238)"
var_dump(hexdec("that")); // print "int(10)"
?>

注释

注意:

此函数可以将太大的数字转换为适应平台的 int 类型,在这种情况下,较大值将会作为 float 返回。

参见

发现了问题?

了解如何改进此页面提交拉取请求报告一个错误
+添加备注

用户贡献的备注 2 notes

up
32
hafees at msn dot com
15 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
1
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.
+添加备注

AltStyle によって変換されたページ (->オリジナル) /