Portrety Uliczne Nieznajomych - zobacz wyjątkową galerię portretów z warszawskich ulic
ZALOGUJ SIĘ
login:
hasło:
przypomnij hasło
załóż konto użytkownika
(i zobacz kilka porad gratis)
   
WYSZUKIWARKA I DZIAŁY
całe porady  tytuły
zaznacz działy do przeszukania
(brak wyboru = wszystkie działy)
PHP
MySQL >
PostgreSQL
SQLite
Perl
Java
XML
XSLT
XPath
WML
SVG
RegExp
Wyszukiwarki
Ochrona
VBScript
Google Plus
XHTML/CSS
JavaScript
Grafika
Flash
Photoshop
Windows
Linux
Bash
Apache
Procmail
E-biznes
Explorer
Opera
Firefox
Inne porady
   
KURSY, DOKUMENTACJE
Własne:
XHTML/CSS
JavaScript
ActionScript
WML, RSS, SSI
Pozostałe:
PHP
MySQL
Java API
więcej...
   
użytkowników online: 63
W CZYM MOGĘ POMÓC?


   
OPINIE UŻYTKOWNIKÓW
Gratulacje i dzięki! Trafiłem tu przypadkiem poszukując informacji na temat php+mysql. Wiele polskich stron powiela identyczne przykłady, klonuje te same kursy i lekcje... ten serwis okazał sie inny. Zasada "problem - rozwiazanie - wyjaśnienie" zdaje egzamin - zapewnia jasną, jednoznaczną i pewną pomoc w konkretnym przypadku. Porady są warte swojej ceny, przede wszystkim ze względu na przyjazną (także dla początkujących) formę i treść oraz bogate i stale powiększane zasoby. Polecam i pozdrawiam!

Kamil Dmowski
Polski Czerwony Krzyż

   
GALERIA FOTOGRAFII
   
PODRĘCZNIK PHP 5.x, 4.x, 3.x - częściowo spolszczony / źródło: www.php.net

[Spis] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [X] [W] [Z]

hexdec

(PHP 3, PHP 4, PHP 5)

hexdec -- Konwersja liczby szesnastkowej do dziesiętnej

Opis

int hexdec ( string hex_string )

Zwraca dziesiętny odpowiednik liczby szesnastkowej podanej w argumencie hex_string. hexdec() konwertuje szesnastkowy łańcuch znaków do postaci liczby dziesiętnej. Największą liczbą, która może być skonwertowana jest 7fffffff, czyli 2147483647 dziesiętnie.

hexdec() zastąpi każdy znak, nie będący cyfrą w systemie szesnastkowym liczbą 0. W ten sposób, wszystko zera stojące z lewej strony są ignorowane, ale zera z prawej strony są brane pod uwagę.

Przykład 1. Przykład zastosowania hexdec()

var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// obydwa zwracają "int(238)"

var_dump(hexdec("that"));
var_dump(hexdec("a0"));
// obydwa zwracają int(160)

Patrz także: dechex().




User Contributed Notes

ayadav at infoprocorp dot com
28-Dec-2005 09: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
28-Oct-2005 10: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 04: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 07: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 03: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
16-Aug-2005 08: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
20-Jun-2005 06: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 04: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
02-May-2005 10: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 09: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 11: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
22-Mar-2005 06: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
10-Feb-2005 08: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; }
}
?>


19-Jan-2005 06: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 04: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
08-May-2004 06: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 01: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 12: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 02: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
15-Dec-2001 07: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 03: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 12: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.


 

 
  © 1996-2012 & Reporter.plmiejscao serwisieabonamentwarunki korzystaniaRSSkontakt