SORU
29 HAZİRAN 2009, PAZARTESİ


Nasıl PHP bir dize bir hex dökümü alabilir miyim?

PHP5 kodlamaları araştırıyorum. Bir yolu bir dize ham bir hex dökümü almak için var mı? bir dize yani her bayt onaltılık gösterimi (karakter değil)?

CEVAP
19 Kasım 2010, Cuma


İkili protokoller ile hata ayıklama iş için, daha geleneksel bir HEX dökümü ihtiyacım vardı, bu fonksiyon yazdım:

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 daha geleneksel bir HEX dökümü, bu gibi ü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 süre - satır başına bayt sayısını değiştirebilirsiniz (dolar), genişlik ve dolgu karakteri ile değiştirilir unutmayın ($tampon) sizin ihtiyaçlarınıza uygun. Eğer bir tarayıcı çıktı görüntülemek istiyorsanız "<br/>" geçmesi $yeni satır bir değişken ekledim.

Bu yararlı olduğunu umuyoruz :-)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • UnboxTechnology

    UnboxTechnol

    20 Ocak 2011
  • YouplusmeVEVO

    YouplusmeVEV

    4 EYLÜL 2014