Created
July 8, 2016 12:52
-
-
Save Norcoen/777f76b088af637f9cbc4592dc3ce2e9 to your computer and use it in GitHub Desktop.
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