dechex

(PHP 4, PHP 5)

dechexDecimal to hexadecimal

Description

string dechex ( int $number )

Returns a string containing a hexadecimal representation of the given unsigned number argument.

The largest number that can be converted is PHP_INT_MAX * 2 + 1 (or -1): on 32-bit platforms, this will be 4294967295 in decimal, which results in dechex() returning ffffffff.

Parameters

number

The decimal value to convert.

As PHP's integer type is signed, but dechex() deals with unsigned integers, negative integers will be treated as though they were unsigned.

Return Values

Hexadecimal string representation of number.

Examples

Example #1 dechex() example

<?php
echo dechex(10) . "\n";
echo 
dechex(47);
?>

The above example will output:

a
2f

Example #2 dechex() example with large integers

<?php
// The output below assumes a 32-bit platform.
// Note that the output is the same for all values.
echo dechex(-1)."\n";
echo 
dechex(PHP_INT_MAX 1)."\n";
echo 
dechex(pow(232) - 1)."\n";
?>

The above example will output:

ffffffff
ffffffff
ffffffff

See Also

Коментарии

Here are two functions that will convert large dec numbers to hex and vice versa. And I really mean LARGE, much larger than any function posted earlier.

<pre>
// Input: A decimal number as a String.
// Output: The equivalent hexadecimal number as a String.
function dec2hex($number)
{
    $hexvalues = array('0','1','2','3','4','5','6','7',
               '8','9','A','B','C','D','E','F');
    $hexval = '';
     while($number != '0')
     {
        $hexval = $hexvalues[bcmod($number,'16')].$hexval;
        $number = bcdiv($number,'16',0);
    }
    return $hexval;
}

// Input: A hexadecimal number as a String.
// Output: The equivalent decimal number as a String.
function hex2dec($number)
{
    $decvalues = array('0' => '0', '1' => '1', '2' => '2',
               '3' => '3', '4' => '4', '5' => '5',
               '6' => '6', '7' => '7', '8' => '8',
               '9' => '9', 'A' => '10', 'B' => '11',
               'C' => '12', 'D' => '13', 'E' => '14',
               'F' => '15');
    $decval = '0';
    $number = strrev($number);
    for($i = 0; $i < strlen($number); $i++)
    {
        $decval = bcadd(bcmul(bcpow('16',$i,0),$decvalues[$number{$i}]), $decval);
    }
    return $decval;
}
</pre>
2002-04-28 12:21:06
http://php5.kiev.ua/manual/ru/function.dechex.html
Here's how to use bitwise operations for RGB2hex conversion. This function returns hexadesimal rgb value just like one submitted by gurke@bigfoot.com above.

function hexColor($color) {
  return dechex(($color[0]<<16)|($color[1]<<8)|$color[2]);
}

example:

$col[0] = 25;
$col[1] = 255;
$col[2] = 55;

print hexColor($col);
2002-09-23 22:20:38
http://php5.kiev.ua/manual/ru/function.dechex.html
Автор:
Create Random Hex Color:

function make_seed() { 
   list($usec, $sec) = explode(' ', microtime()); 
   return (float) $sec + ((double) $usec * 100000); 


function rand_hex() {
   mt_srand(make_seed()); 
   $randval = mt_rand(0,255);
   //convert to hex
   return sprintf("%02X",$randval);
}

function random_color(){
   return "#".rand_hex().rand_hex().rand_hex();
}

hme ;)
2003-09-16 18:36:00
http://php5.kiev.ua/manual/ru/function.dechex.html
Easiest :P way to create random hex color:

<?php
function rand_color() {
    return 
substr('00000' dechex(mt_rand(00xffffff)), -6);
}
?>
2004-02-05 11:05:38
http://php5.kiev.ua/manual/ru/function.dechex.html
Автор:
If you need to convert RGB-color into HEX-color, use this:
<?php
function rgb2hex($rgb){
    return 
sprintf("%06X"$rgb);
}
$hex rgb2hex(65280); // 00FF00
?>
2004-12-11 15:30:17
http://php5.kiev.ua/manual/ru/function.dechex.html
Автор:
If you need to generate random HEX-color, use this:
<?php
function random_hex_color(){
    return 
sprintf("%02X%02X%02X"mt_rand(0255), mt_rand(0255), mt_rand(0255));
}
$hex random_hex_color(); // 09B826
?>

Enjoy.
2004-12-12 09:31:31
http://php5.kiev.ua/manual/ru/function.dechex.html
Here is a very small zeropadding that you can use for numbers:

function zeropad($num, $lim)
{
   return (strlen($num) >= $lim) ? $num : zeropad("0" . $num);
}

zeropad("234",6);

will produce:
000234

zeropad("234",1);

will produce:
234
2005-05-01 22:28:19
http://php5.kiev.ua/manual/ru/function.dechex.html
A less elegant but (perhaps) faster way to pad is with substr with a negative length argument. I use it in this tiny function which formats computed rgb color codes for style sheets:
<?
function toColor($n)
{
return(
"#".substr("000000".dechex($n),-6));
}
?>
2005-05-28 22:33:06
http://php5.kiev.ua/manual/ru/function.dechex.html
These are functions to convert roman numbers (e.g. MXC) into dec and vice versa.
Note: romdec() does not check whether a string is really roman or not. To force a user-input into a real roman number use decrom(romdec($input)). This will turn XXXX into XL for example.

<?php
   
function decrom($dec){
       
$digits=array(
           
=> "I",
           
=> "IV",
           
=> "V",
           
=> "IX",
           
10 => "X",
           
40 => "XL",
           
50 => "L",
           
90 => "XC",
           
100 => "C",
           
400 => "CD",
           
500 => "D",
           
900 => "CM",
           
1000 => "M"
       
);
       
krsort($digits);
       
$retval="";
        foreach(
$digits as $key => $value){
            while(
$dec>=$key){
               
$dec-=$key;
               
$retval.=$value;
            }
        }
        return 
$retval;
    }

    function 
romdec($rom){
       
$digits=array(
           
"I" => 1,
           
"V" => 5,
           
"X" => 10,
           
"L" => 50,
           
"C" => 100,
           
"D" => 500,
           
"M" => 1000
       
);
       
$retval="";
       
$chars=array();
        for(
$i=1;$i<=strlen($rom);$i++){
           
$chars[]=substr($rom,$i-1,1);
        }
       
$step=1;
        for(
$i=count($chars)-1;$i>=0;$i--){
            if(!isset(
$digits[$chars[$i]])){ return "Error!"; }
            if(
$step<=$digits[$chars[$i]]){
               
$step=$digits[$chars[$i]];
               
$retval+=$digits[$chars[$i]];
            }
            else{
               
$retval-=$digits[$chars[$i]];
            }
        }
        return 
$retval;
    }

    echo 
decrom(romdec("XXXX"));
?>
2005-12-28 07:00:10
http://php5.kiev.ua/manual/ru/function.dechex.html
Автор:
Be very careful calling dechex on a number if it's stored in a string.

For instance:

The max number it can handle is 4294967295 which in hex is FFFFFFFF, as it says in the documentation.

dechex(4294967295) => FFFFFFFF //CORRECT

BUT, if you call it on a string of a number, it casts to int, and automatically gives you the largest int it can handle.

dechex('4294967295') => 7FFFFFFF //WRONG!

so you'll need to cast to a float:

dechex((float) '4294967295') => FFFFFFFF //CORRECT

This took me FOREVER to figure out, so hopefully I just saved someone some time.
2006-12-16 01:33:16
http://php5.kiev.ua/manual/ru/function.dechex.html
I was challenged by a problem with large number calculations and conversion to hex within php. The calculation exceeded unsigned integer and even float range. You can easily change it for your needs but it is, thanks to bcmath, capable of handling big numbers via string. This function will convert them to hex.

In this specific example though, since I use it for game internals that can only handle 32 bit numbers, it will truncate calculations at 8 digits. If the input is 1 for example it will be filled up with zeros. Output 00000001h.

Of course I don't claim it to be a good one, but it works for me and my purpose. Suggestions on faster code welcome!

<?php
// Turns numbers into 32-bit hex string; Fills up zeros
function lrgDec2Hex($number)
{
   
$i 0;
   
$hex = array();

    while(
$i 8) {
        if(
$number == 0) {
           
array_push($hex'0');
        }
        else {
           
array_push($hexstrtoupper(dechex(bcmod($number'16'))));
           
$number bcdiv($number'16'0);
        }
       
$i++;
    }
   
krsort($hex);
    return 
implode($hex);
}
?>
2008-05-11 12:55:55
http://php5.kiev.ua/manual/ru/function.dechex.html
I was confused by dechex's size limitation. Here is my solution to the problem. It supports much bigger values, as well as signs.

<?php
function dec_to_hex($dec)
{
   
$sign ""// suppress errors
   
if( $dec 0){ $sign "-"$dec abs($dec); }

   
$hex = Array( => 0=> 1=> 2=> 3=> 4=> 5,
                 
=> 6=> 7=> 8=> 910 => 'a',
                 
11 => 'b'12 => 'c'13 => 'd'14 => 'e',   
                 
15 => 'f' );
       
    do
    {
       
$h $hex[($dec%16)] . $h;
       
$dec /= 16;
    }
    while( 
$dec >= );
   
    return 
$sign $h;
}
?>
2008-10-29 04:23:59
http://php5.kiev.ua/manual/ru/function.dechex.html
If you need to convert a large number (> PHP_MAX_INT) to a hex value, simply use base_convert. For example:

base_convert('2190964402', 10, 16); // 829776b2
2012-03-07 16:44:11
http://php5.kiev.ua/manual/ru/function.dechex.html
If you want to create or parse signed Hex values:

<?php
// $d should be an int
function sdechex($d) { return ($d<0) ? ('-' dechex(-$d)) : dechex($d); }

// $h should be a string
function shexdec($h) { return ($h[0] === '-') ? -('0x' substr($h,1) + 0) : ('0x' $h 0); }

// test

$v sdechex(-123); // string(3) "-7b"
$i shexdec($v);   // int(-123)
var_dump($v$i);
?>

Also note that ('0x' . $str + 0) is faster than hexdec()
2012-03-23 09:09:50
http://php5.kiev.ua/manual/ru/function.dechex.html
this base function convert string rgb to color
<?php
   
function rgb_to_color($rgb$symbols=' '){
       
$color '';
       
$arr explode($symbols$rgb);
       
$count count($arr);
        for(
$i=0$i<$count$i++){
           
$color .= dechex($arr[$i]);
        }
        return 
'#'.$color;
    }
       echo 
rgb_to_color('186 186 18');  // #baba12
   
echo rgb_to_color('186-186-18''-');  // #baba12
?>
2014-09-02 00:16:55
http://php5.kiev.ua/manual/ru/function.dechex.html
I like the example with the bitwise operations but if the value of color[0] is less than 16 it's not accurate:
example:
color[0]: 0;
color[1]: 0;
color[2]: 255;
 function hexColor($color) {
  return dechex(($color[0]<<16)|($color[1]<<8)|$color[2]);
}
It returns "ff", which is not legit RGB color...
so my solution is to combine the function above with: 
function toColor($n)
{
return("#".substr("000000".dechex($n),-6));
}

If you gotta deal with array of rgb values this is my solution:
------------------------------------------------------
function hexColor($color) {
    $rgb = dechex(($color[0]<<16)|($color[1]<<8)|$color[2]);
    return("#".substr("000000".$rgb, -6));
}
------------------------------------------------------
2015-04-30 17:43:58
http://php5.kiev.ua/manual/ru/function.dechex.html
Автор:
Zero padded hex strings as a pair of 2 (8bit).

<?php 
function dec2hex($int) {
 
$hex dechex($int);
  if (
strlen($hex)%!= 0) {
   
$hex str_pad($hexstrlen($hex) + 1'0'STR_PAD_LEFT);
  }
  return 
$hex;
}

dec2hex(2); // 02
dec2hex(10); // 0a
dec2hex(256); // 0100
?>
2022-07-24 14:45:11
http://php5.kiev.ua/manual/ru/function.dechex.html

    Поддержать сайт на родительском проекте КГБ