Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Interpretacja string jako hex
Forum PHP.pl > Forum > PHP
lmdl
Witam,

Potrzebuję zliczyć częstotliwość występowania w pliku konkretnych wartości przedstawionych w sposób hexadecymalny. Podpowiedzcie co źle robię:

  1. //generuje caly zestaw znakow jakie moga wystapic w zapisie hexadecymalnym
  2. $charList = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
  3. foreach($charList as $val1) {
  4. foreach($charList as $val2) {
  5. $hexChar[] = "\x" . $val1 . $val2;
  6. }
  7. }
  8.  
  9. //wyswietlam wyniki w formacie znak_w_hex - ilosc_wystapien
  10. foreach($hexChar as $val) {
  11. echo $val . ' - ' . substr_count($data, $val) . '<br>';
  12. }
  13.  


Niestety kiedy w funkcji substr_count jako drugi parametr podaje wartość wyciągniętą z tablicy to funkcja traktuje szukany ciąg jako string. iedy wpiszę tam "ręcznie" np "\x00" to zlicza prawidłowo.
Wiecie jak to zmienić aby prawidłowo działało ?

Czy mój problem jest taka banalny i trywialny, że nikomu się nie chce na niego odpowiedzieć, czy faktycznie nikt nie wie jak to zrobić ?
taktu
A funkcje z maunala sprawdzałeś? dechex może pomóc.
JohnnyB
to zależy czym jest $data - jeśli to string typu "\x61" to PHP potraktuje to jako hexadecymalny kod ASCII i zamieni na jeden znak (w tym przykładzie na 'a'). Jeśli w tym jest problem, to poniższy kod zadziała:
  1. foreach($hexChar as $k=>$val) {
  2. echo $val . ' - ' . substr_count($data, chr($k)) . '<br>';
  3. }
  4.  

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.