hexdec

(PHP 3, PHP 4, PHP 5)

hexdec -- 十六进制转换为十进制

说明

number hexdec ( string hex_string )

返回与 hex_string 参数所表示的十六进制数等值的的十进制数。hexdec() 将一个十六进制字符串转换为十进制数。所能转换的最大数值为 7fffffff,即十进制的 2147483647。PHP 4.1.0 开始,该函数可以处理大数字,这种情况下,它会返回 float 类型。

hexdec() 将遇到的所有非十六进制字符替换成 0。这样,所有左边的零都被忽略,但右边的零会计入值中。

例子 1. hexdec() 例子

<?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)"
?>

参见 dechex()bindec()octdec()base_convert()


add a note add a note User Contributed Notes
cgarvis at gmail dot com
10-Oct-2006 01:39
Here is my version of hex2rgb for web colors to 24bit colors.

<?php
function hex2rgb_webcolors($hex) {
  
$hex = eregi_replace("[^a-fA-F0-9]", "", $hex);
   switch(
strlen($hex) ) {
       case
2:
          
$hex = substr($hex,0,2)."0000";
           break;
       case
3:
          
$hex = substr($hex,0,1).substr($hex,0,1)
           .
substr($hex,1,1).substr($hex,1,1)
           .
substr($hex,2,1).substr($hex,2,1);
           break;
       case
4:
          
$hex = substr($hex,0,4)."00";
           break;
       case
6:
           break;
       default:
          
$hex = 0;
           break;
   }
   return
hexdec($hex);
}
?>
Lukasz (Zajonc) Zajaczkowski
18-Aug-2006 04:44
Function converting HEX to signed DEC

function hex2sdec ($hex)
{
  //how many bytes
  $ib = strlen ($hex) - (strlen ($hex) % $hex)) / $hex;
  if ((strlen ($hex) % 2) > 0)
   $ib = $ib + 1;

  //how many bites
  $ibb = 8 * $ib;

  //search for -1 value (max_uj)
  $buf = '1';
  for ($i = 1; $i <= $ibb - 1; $i++)
  {
   $buf .= '0';
  }
  $max_uj = bindec ($buf);

  //decide a sign, and calculate a value
  if (hexdec ($hex) < $max_uj)
  //+
  {
   $sdec = hexdec ($hex);
  }
  else
  //-
  {
   //search for max value + 1
   //(for ex. if hex = 23ef then max_p1 = ffff + 1)
   $buf = '';
   for ($i = 1; $i <= $ib; $i++)
   {
     $buf .= 'ff';
   }
   $max_p1 = hexdec ($buf) + 1;

   $sdec = hexdec ($hex) - $max_p1;
  }

  return $sdec;
}
repley at freemail dot it
29-May-2006 09:55
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.
greatwhitepine at NOSPAM dot yahoo dot ca
31-Mar-2006 04:46
Hex to binary conversion that works for large and small hex numbers.

<?php

function hexbin($str_hex) {
 
$str_bin = FALSE;
  for (
$i=0; $i < strlen($str_hex); $i++) {
  
$str_bin .= sprintf("%04s", decbin(hexdec($str_hex[$i])));
  }
  return
$str_bin;
}

$str_hex = "effffff20df";

print
"\n          HEX VALUE: $str_hex\n";
printf("  REAL BINARY VALUE: %50s\n", hexbin($str_hex));
printf("CHOPPED BINARY VALUE: %50s\n\n", decbin(hexdec($str_hex)));

?>
ayadav at infoprocorp dot com
28-Dec-2005 04:03
From Amit Yadav

Hex to binary conversion

$num = hexdec("20DF");
echo binfromdec($num);

function binfromdec($num)
{
   if ($num > 32766)    return ("Too Large!");
   if ($num & 16384)    $bit15 = 1;
   if ($num & 8192)    $bit14 = 1;
   if ($num & 4096)    $bit13 = 1;
   if ($num & 2048)    $bit12 = 1;
   if ($num & 1024)    $bit11 = 1;
   if ($num & 512)        $bit10 = 1;
   if ($num & 256)        $bit9 = 1;
   if ($num & 128)        $bit8 = 1;
   if ($num & 64)        $bit7 = 1;
   if ($num & 32)        $bit6 = 1;
   if ($num & 16)        $bit5 = 1;
   if ($num & 8)        $bit4 = 1;
   if ($num & 4)        $bit3 = 1;
   if ($num & 2)        $bit2 = 1;
   if ($num & 1)        $bit1 = 1;

   return ("" . $bit15 . $bit14 . $bit13 . $bit12 . $bit11 . $bit10 . $bit9 . $bit8 . $bit7 . $bit6 . $bit5 . $bit4 . $bit3 . $bit2 . $bit1);

}
cory at lavacube dot com
29-Oct-2005 04:59
A handy little function to convert HEX colour codes to "web safe" colours...

<?php

function color_mkwebsafe ( $in )
{
  
// put values into an easy-to-use array
  
$vals['r'] = hexdec( substr($in, 0, 2) );
  
$vals['g'] = hexdec( substr($in, 2, 2) );
  
$vals['b'] = hexdec( substr($in, 4, 2) );

  
// loop through
  
foreach( $vals as $val )
   {
      
// convert value
      
$val = ( round($val/51) * 51 );
      
// convert to HEX
      
$out .= str_pad(dechex($val), 2, '0', STR_PAD_LEFT);
   }

   return
$out;
}

?>

Example: color_mkwebsafe('0e5c94');
Produces: 006699

Hope this helps someone out... Happy coding. :-)
hajamie@home
24-Oct-2005 10:38
This function will take a hex $color, e.g. fa34bc and make it the shade you want, e.g. anywhere between 0 and 255. The smaller the number, the darker the output color.  It keeps the color the same, only changing the shade. 

function correctshade($color, $shade)
{
$r = hexdec(substr($color,0,2));
$g = hexdec(substr($color,2,2));
$b = hexdec(substr($color,4,2));
$sum = ($r + $g + $b);
$x = (($shade * 3) - $sum) / $sum;
if ($x >= 0) {
$x = $x + 1;
} else {
$x = 1 + $x;
}
$r = intval($x * $r);
$g = intval($x * $g);
$b = intval($x * $b);
$r = dechex($r);
$g = dechex($g);
$b = dechex($b);
return $r.$g.$b;
}
09-Oct-2005 01:53
I needed to get the opposite colors so my website would be soft on the eyes.

<?php
function OppositeHex($color)
{
$r = dechex(255 - hexdec(substr($color,0,2)));
$r = (strlen($r) > 1) ? $r : '0'.$r;
$g = dechex(255 - hexdec(substr($color,2,2)));
$g = (strlen($g) > 1) ? $g : '0'.$g;
$b = dechex(255 - hexdec(substr($color,4,2)));
$b = (strlen($b) > 1) ? $b : '0'.$b;
return
$r.$g.$b;
}

//Example
$color = '000000';
echo
'The opposite of #'.$color.' is #'.OppositeHex($color).';
?>
detrate at hotmail dot com
30-Sep-2005 09:38
I made this for a little phpbb mod.  It was used to take the hex value from the database and make a color 20 (in decimal) less, resulting a darker color.

EXAMPLE: #336699 to #1f5285

<?php

$row1
= "336699"; // color
$c = 20;          // difference value

$rgb = array(substr($row1,0,2), substr($row1,2,2), substr($row1,4,2));

for(
$i=0; $i < 3; $i++)
{
  if((
hexdec($rgb[$i])-$c) >= 0)
  {
  
$rgb[$i] = hexdec($rgb[$i])-$c;

  
$rgb[$i] = dechex($rgb[$i]);
   if(
hexdec($rgb[0]) <= 9)
    
$rgb[$i] = "0".$rgb[$i];
  } else {
  
$rgb[$i] = "00";
  }
}

$row2 = $rgb[0].$rgb[1].$rgb[2];

?>
Gabriel Reguly
17-Aug-2005 02:24
After esnhexdec from "rledger at gmail dot com",  the esndechex:

<?php
  
function esndechex($dec){
        
$a = strtoupper(dechex(substr($dec, 12)));
        
$b = strtoupper(dechex(substr($dec, 3, 10)));
         return
$a . $b;
   }
?>
djneoform at gmail dot com
21-Jun-2005 12:51
since i couldn't find one, here's an HEX to ASCII converter..

(takes HEX strings (in ASCII) and converts each two digit HEX code into it's ASCII equivalent)

function hex2ascii($str)
{
   $p = '';
   for ($i=0; $i < strlen($str); $i=$i+2)
   {
       $p .= chr(hexdec(substr($str, $i, 2)));
   }
   return $p;
}
bishop
05-Jun-2005 10:51
Bullet-proof hex-to-rgb colour converter like brian at sagesport dot com wanted, just far fewer code lines. As a bonus, gives you the ability to return as string or array:

<?php
  
function &hex2rgb($hex, $asString = true)
   {
      
// strip off any leading #
      
if (0 === strpos($hex, '#')) {
          
$hex = substr($hex, 1);
       } else if (
0 === strpos($hex, '&H')) {
          
$hex = substr($hex, 2);
       }     

      
// break into hex 3-tuple
      
$cutpoint = ceil(strlen($hex) / 2)-1;
      
$rgb = explode(':', wordwrap($hex, $cutpoint, ':', $cutpoint), 3);

      
// convert each tuple to decimal
      
$rgb[0] = (isset($rgb[0]) ? hexdec($rgb[0]) : 0);
      
$rgb[1] = (isset($rgb[1]) ? hexdec($rgb[1]) : 0);
      
$rgb[2] = (isset($rgb[2]) ? hexdec($rgb[2]) : 0);

       return (
$asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb);
   }
?>

Handles 2, 3, and 6 character colour codes with leading # or &H.
Joey Morwick
03-May-2005 04:07
I found it helpful to have the inverse / reverse of this function laying around, since I wanted to insert some binary data into an xmlrpc call (it currently craps out when you do that), and I couldn't find one laying around, so here's a simple little function to do that:

function hex2bin($str) {
   $build = '';
   while(strlen($str) > 1) {
       $build .= chr(hexdec(substr($str, 0, 2)));
       $str = substr($str, 2, strlen($str)-2);
   }
   return $build;
}
rledger at gmail dot com
29-Mar-2005 03:59
To convert a cellular ESN from hexadecimal to decimal, use the following code. The base conversion is different due to the fact that the first two characters of a hexadecimal value must be converted seperately from the remaining six characters.
<?
function esnhexdec($hex){
  
$a = sprintf("%03d", hexdec(substr($hex, 0, 2)));
  
$b = sprintf("%08d", hexdec(substr($hex, 2, 6)));
   return
$a . $b;
}
?>
zubfatal, root at it dot dk
25-Mar-2005 06:36
This replaces my previous class.
I've added a few more input checks in the rgb2hex function.
Also it returned incorrect hex values for 1-digit values.

color::rgb2hex(array(0,0,0)) would output 000 not 00000.

<?php

/**
* Convert colors
*
* Usage:
*  color::hex2rgb("FFFFFF")
*  color::rgb2hex(array(171,37,37))
*
* @author      Tim Johannessen <root@it.dk>
* @version    1.0.1
*/

class color {

  
/**
     * Convert HEX colorcode to an array of colors.
     * @return      array        Returns the array of colors as array(red,green,blue)
     */
    
  
function hex2rgb($hexVal = "") {
      
$hexVal = eregi_replace("[^a-fA-F0-9]", "", $hexVal);
       if (
strlen($hexVal) != 6) { return "ERR: Incorrect colorcode, expecting 6 chars (a-f, 0-9)"; }
      
$arrTmp = explode(" ", chunk_split($hexVal, 2, " "));
      
$arrTmp = array_map("hexdec", $arrTmp);
       return array(
"red" => $arrTmp[0], "green" => $arrTmp[1], "blue" => $arrTmp[2]);
   }
    
  
/**
     * Convert RGB colors to HEX colorcode
     * @return      string        Returns the converted colors as a 6 digit colorcode
     */
  
function rgb2hex($arrColors = null) {
       if (!
is_array($arrColors)) { return "ERR: Invalid input, expecting an array of colors"; }
       if (
count($arrColors) < 3) { return "ERR: Invalid input, array too small (3)"; }
        
      
array_splice($arrColors, 3);
        
       for (
$x = 0; $x < count($arrColors); $x++) {
           if (
strlen($arrColors[$x]) < 1) {
               return
"ERR: One or more empty values found, expecting array with 3 values";
           }
            
           elseif (
eregi("[^0-9]", $arrColors[$x])) {
               return
"ERR: One or more non-numeric values found.";
           }
            
           else {
               if ((
intval($arrColors[$x]) < 0) || (intval($arrColors[$x]) > 255)) {
                   return
"ERR: Range mismatch in one or more values (0-255)";
               }
                
               else {
                  
$arrColors[$x] = strtoupper(str_pad(dechex($arrColors[$x]), 2, 0, STR_PAD_LEFT));
               }
           }
       }
        
       return
implode("", $arrColors);
   }

}

?>
brian at sagesport dot com
23-Mar-2005 01:08
The issue I've seen with the existing hex to dec conversion routines is the lack of error-trapping.  I stick to the theory that one should try to cover ALL the bases when writing a generalized routine such as this one.  I have a varied background that covers a wide variety of design/development languages, on the web as well as desktop apps.  As such I've seen multiple formats for writing hex colors.

For example, the color red COULD be written as follows:
#ff0000
&Hff0000
#ff
&Hff

Therefore I have written a function that is case-insensitive and takes into account the chance that different developers have a tendency to format hex colors in different ways.

<?php
 
function convert_color($hex){
  
$len = strlen($hex);
  
$chars = array("#","&","H","h");
  
$hex = strip_chars($hex, $chars);
  
preg_match("/([0-9]|[A-F]|[a-f]){".$len."}/i",$hex,$arr);
  
$hex = $arr[0];
   if (
$hex) {
     switch(
$len) {
       case
2:
        
$red = hexdec($hex);
        
$green = 0;
        
$blue = 0;
         break;
       case
4:
        
$red = hexdec(substr($hex,0,2));
        
$green=hexdec(substr($hex,2,2));
        
$blue = 0;
         break;
       case
6:
        
$red = hexdec(substr($hex,0,2));
        
$green=hexdec(substr($hex,2,2));
        
$blue = hexdec(substr($hex,4,2));
         break;     
     };
    
$color[success] = true;
    
$color[r] = $red;
    
$color[g] = $green;
    
$color[b] = $blue;
     return
$color;
   } else {
    
$color[success] = false;
    
$color[error] = "unable to convert hex to dec";
   };
  }

  function
strip_chars($string, $char){
  
$len = strlen($string);
  
$count = count($char);
   if (
$count >= 2) {
     for (
$i=0;$i<=$count;$i++) {
       if (
$char[$i]) {
        
$found = stristr($string,$char[$i]);
         if (
$found) {
          
$val = substr($string,$found+1,$len-1);
          
$string = $val;
         };
       };
     };
   } else {
    
$found = stristr($string,$char);
     if (
$found) {
      
$val = substr($string,$found+1,$len-1);
     };
   };
   echo
$val;
   return
$val;
  }

 
/*
   To use simply use the following function call:
     $color = convert_color("#FF");
     this will return the following assoc array if successful:
     *[success] = true
     *[r] = 255
     *[g] = 0
     *[b] = 0

     or copy and paste the following code:
    
     $hex = "FFFFFF"; // Color White
     $color = convert_color($hex);
     var_dump($color);
 */
?>

As you can see, the function "convert_color" accepts a hex # in most acceptable formats and returns an associative array.  [success] is set to TRUE if the function succeeds and FALSE if not.  The array members [r], [g] and [b] hold the red,green and blue values respectively.  If it fails, [error] holds a custom error message.

"strip_chars" is a support function written to remove the unwanted characters from the hex string, and sends the concatenated string back to the calling function.  It will accept either a single value or an array of values for the characters to remove.
groobo
11-Feb-2005 03:46
It's just a revision to marfastic's ligten_up script, it simply adds/subtracts mod_color to orig_color.
I use it often to adjust tonals rather than brightness only

<?
function mod_color($orig_color, $mod, $mod_color){
  
/*
       $orig_color - original html color, hex
       $mod_color - modifying color, hex
       $mod - modifier '+' or '-'
       usage: mod_color('CCCCCC', '+', '000033')
   */
   // does quick validation
  
preg_match("/([0-9]|[A-F]){6}/i",$orig_color,$orig_arr);
  
preg_match("/([0-9]|[A-F]){6}/i",$mod_color,$mod_arr);
   if (
$orig_arr[0] && $mod_arr[0]) {
       for (
$i=0; $i<6; $i=$i+2) {
          
$orig_x = substr($orig_arr[0],$i,2);
          
$mod_x = substr($mod_arr[0],$i,2);
           if (
$mod == '+') { $new_x = hexdec($orig_x) + hexdec($mod_x); }
           else {
$new_x = hexdec($orig_x) - hexdec($mod_x); }
           if (
$new_x < 0) { $new_x = 0; }
           else if (
$new_x > 255) { $new_x = 255; };
          
$new_x = dechex($new_x);
          
$ret .= $new_x;
       }
       return
$ret;
   } else { return
false; }
}
?>
20-Jan-2005 01:33
I wondered long time what is the best way to generate RGB-color from HEX-color, and just now i found the simpliest way!

<?php
$hex
= "FF00FF";
$rgb = hexdec($hex); // 16711935
?>

I hope this will save your time! :)
marfastic
10-Dec-2004 11:14
Here is a function to brighten up any color:

function lighten_up($orig_color, $fraction_denom){
           // return the color between the color and white
           // based on the fraction denom that is passed
          
           if(!isset($fraction_denom))
               $fraction_denom = 2;
           $highest_val = hexdec("FF");
           $r = hexdec(substr($orig_color,0,2));
           $r = ($highest_val-$r)/$fraction_denom + $r;
           $g = hexdec(substr($orig_color,2,2));
           $g = ($highest_val-$g)/$fraction_denom + $g;
           $b = hexdec(substr($orig_color,4,2));
           $b = ($highest_val-$b)/$fraction_denom + $b;
           return dechex($r) . dechex($g) . dechex($b);
       }
_meto ALT+q web.de
09-May-2004 12:00
Damn, this took me some real long time! Maybe it's helpfull for those who even have no idea of color-Schemes like me ;)

If u want to generate PDF's for Print Offices u need to set all the colors in CMYK.

Here is a Function that will convert RGB to CMYK

<?
function hex2rgb($hex) {
 
$color = str_replace('#','',$hex);
 
$rgb = array('r' => hexdec(substr($color,0,2)),
              
'g' => hexdec(substr($color,2,2)),
              
'b' => hexdec(substr($color,4,2)));
  return
$rgb;
}

function
rgb2cmyk($var1,$g=0,$b=0) {
   if(
is_array($var1)) {
    
$r = $var1['r'];
    
$g = $var1['g'];
    
$b = $var1['b'];
   }
   else
$r=$var1;
  
$cyan    = 255 - $r;
  
$magenta = 255 - $g;
  
$yellow  = 255 - $b;
  
$black  = min($cyan, $magenta, $yellow);
  
$cyan    = @(($cyan    - $black) / (255 - $black)) * 255;
  
$magenta = @(($magenta - $black) / (255 - $black)) * 255;
  
$yellow  = @(($yellow  - $black) / (255 - $black)) * 255;
   return array(
'c' => $cyan / 255,
              
'm' => $magenta / 255,
              
'y' => $yellow / 255,
              
'k' => $black / 255);
}

$color=rgb2cmyk(hex2rgb('#FF0000'));
pdf_setcolor($pdf, "both", "cmyk", $color['c'], $color['m'], $color['y'], $color['k']);
?>

U can call it with parameters (r,g,b) or just with an array(r,g,b) that contains these values.

Hope it works correct. All testing was fine.
gelado at ip3 dot com
29-Aug-2003 07:30
Another hex to decimal converter, up to the precision of PHP floats.

function longhex($hex)
{
   $dec = 0;
   $bitval = 1;
   for($pos = 1; $pos <= strlen($hex); $pos++) {
       $dec += hexdec(substr($hex, -$pos, 1)) * $bitval;
       $bitval *= 16;
   }
   return($dec);
}
henrique at recidive dot com
28-May-2003 06:43
Function to convert a string with hexadecimal colors to an associative array with RGB values:

<?
function hex2dec($hex) {
 
$color = str_replace('#', '', $hex);
 
$ret = array(
  
'r' => hexdec(substr($color, 0, 2)),
  
'g' => hexdec(substr($color, 2, 2)),
  
'b' => hexdec(substr($color, 4, 2))
  );
  return
$ret;
}

/*** Example:
print_r(hex2dec('3D58BE'));

or

print_r(hex2dec('#3D58BE'));

will return

Array
(
  [r] => 61
  [g] => 88
  [b] => 190
)
***/
?>

Thanks !

Henrique Recidive
andreas.schmeiler
05-Feb-2003 09:59
Here's another hex2bin variant, works pretty well to me.

function hex2bin($hexdata) {
  
   for ($i=0;$i<strlen($hexdata);$i+=2) {
     $bindata.=chr(hexdec(substr($hexdata,$i,2)));
   }
  
   return $bindata;
}
chrism at four dot net
16-Dec-2001 02:02
hexdec from 4.1.0 onwards does not show
the same size limitation and therefore
works differently with large numbers than previous php versions.

To obtain the same results, use:

(int) hexdec (...)
andychase at yahoo dot com
18-Jan-2001 10:32
For hex numbers larger than 7FFFFFFF (E.G. PalmOS dates in seconds elapsed since 01/01/1904), I came up with this:

function bighexdec($hexnumber){

   $numlength = strlen($hexnumber);

   $decnumber = 0;

   for($x = 1; $x <= $numlength; $x++){

       $place = $numlength - $x;
      
       $operand = hexdec(substr($hexnumber,$place,1));
          
       $exponent = pow(16,$x-1);

       $decValue = $operand * $exponent;
  
       $decnumber += $decValue;

   }

   return $decnumber;
  
}
joe at aigraphics dot com
21-Oct-2000 06:32
Here is a fast block of code to convert HTML Style HEX colors to RGB:
--------------------
$r = hexdec(substr($color, 0, 2));
$g = hexdec(substr($color, 2, 2));
$b = hexdec(substr($color, 4, 2));
--------------------
hope it helps you, enjoy.