Ben PHP5'ta kodlamaları araştırıyorum. Bir dize ham onaltılık dökümü almak için bazı yolu var mı? yani bir dize bayt (karakter değil) her bir onaltılık gösterimi?
Ikili protokoller ile çalışmak hata ayıklama için, ben bir daha geleneksel HEX dökümü gerekli, bu yüzden bu işlevi yazdı:
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;
}
}
Bu gibi daha geleneksel bir HEX dökümü üretir:
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]
Görünür olmayan karakterler bir nokta ile değiştirilir unutmayın - sizin ihtiyaçlarınıza uygun çizgi ($ width) ve dolgu karakteri ($ pad) başına bayt sayısını değiştirebilirsiniz. Ben bir $ satır argüman dahil, böylece bir tarayıcıda çıkışını görüntülemek için gerekiyorsa "<br/>"
geçebilir.
Bu yararlı :-) umut
Bir ikili protokol ayıklama sırasında ben de () bir HexDump gerekli. Ben kesinlikle yararlı bir ARMUT paket olarak benim çözüm yayınlamaya karar verdi. Ayrıca github de kodu göz atabilirsiniz.
ARMUT: http://www.metashock.de/pear
GitHub: http://www.github.com/metashock/Hexdump
Mindplays çözümü ek olarak bu son satır ve ek params screensize oluşturmayı destekler. Ayrıca paket cmdline üzerinde hexdumps için phphd adında bir php yürütülebilir içerir. Bu, Windows sistemleri üzerinde yararlı olabilir :)
@ Mindplay.dk: Teşekkürler strtr () için fikir. Benim eski girişimi daha hızlı hafif çıktı. O benim sürümlerine entegre. (A azalma için tamponu kullanılarak) ..
Have Fun!