Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Interpretacja string jako hex
lmdl
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 6.01.2009

Ostrzeżenie: (0%)
-----


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ć ?
Go to the top of the page
+Quote Post
taktu
post
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 7
Dołączył: 19.05.2008

Ostrzeżenie: (0%)
-----


A funkcje z maunala sprawdzałeś? dechex może pomóc.

Ten post edytował taktu 19.01.2010, 00:26:49
Go to the top of the page
+Quote Post
JohnnyB
post
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


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.  

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 16:25