Dump PHP String as HEX
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* Found at http://stackoverflow.com/questions/1057572/how-can-i-get-a-hex-dump-of-a-string-in-php */ | |
function hex_dump($data, $newline="\n") | |
{ | |
static $from = ''; | |
static $to = ''; | |
static $width = 16; # number of bytes per line | |
static $pad = '.'; # padding for non-visible characters | |
if ($from==='') | |
{ | |
for ($i=0; $i<=0xFF; $i++) | |
{ | |
$from .= chr($i); | |
$to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad; | |
} | |
} | |
$hex = str_split(bin2hex($data), $width*2); | |
$chars = str_split(strtr($data, $from, $to), $width); | |
$offset = 0; | |
foreach ($hex as $i => $line) | |
{ | |
echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline; | |
$offset += $width; | |
} | |
} | |
/* | |
This produces a more traditional HEX dump, like this: | |
hex_dump($data); | |
=> | |
0 : 05 07 00 00 00 64 65 66 61 75 6c 74 40 00 00 00 [.....default@...] | |
10 : 31 42 38 43 39 44 30 34 46 34 33 36 31 33 38 33 [1B8C9D04F4361383] | |
20 : 46 34 36 32 32 46 33 39 32 46 44 38 43 33 42 30 [F4622F392FD8C3B0] | |
30 : 45 34 34 43 36 34 30 33 36 33 35 37 45 35 33 39 [E44C64036357E539] | |
40 : 43 43 38 44 35 31 34 42 44 36 39 39 46 30 31 34 [CC8D514BD699F014] | |
*/ | |
/* | |
Note that non-visible characters are replaced with a period - you can change the number of bytes per line ($width) | |
and padding character ($pad) to suit your needs. | |
I included a $newline argument, so you can pass "<br/>" if you need to display the output in a browser. | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment