Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zmienna bit po bicie
Forum PHP.pl > Forum > Przedszkole
pawel.b
witam

czy ktoś wie jak pobierać w php z dowolnej zmiennej wartość bit po bicie questionmark.gif

z góry dzięki za pomoc
pawel.b
znam operatory bitowe natomiast nie widzę sposobu jak ich użyć do osiągnięcia takiego efektu :
  1. <?php
  2. $zmienna ="kraków";
  3. for($i=0;$i
  4. {
  5. echo (wez_bit($i,$zmienna) === true) ?1:0;
  6. }
  7. ?>


czy php tak potrafi questionmark.gif
mls
Oczywiście, że potrafi. Przy pomocy wspomnianych już operatorów bitowych. A jeśli nie wiesz jak z nich korzystać, po co w ogóle zabierasz się za sprawdzanie bitów?
Przy okazji przypomnę, że bity dotyczą liczb. A nie tekstu.
f1xer
żeby sprawdzić czy bit jest zapalony czy zgaszony w danej liczbie musisz wykonać na niej operację logiczną AND

np.

3 AND 1 = 1 bo 3 = 00000011 czyli pierwszy bit (najmniej znaczący czyli z prawej strony) jest zapalony ale już
3 AND 4 = 0
pawel.b
ok napiszę konkretny przykład , chce zaszyfrować i odzyfrować jakiś text operacją bitową xor.
np:
  1. <?php
  2. $text = 'asdefgho';
  3. $klucz_szyfruj&#261;cy = 'szyfr';
  4.  
  5. //szyfrowanie
  6. $zaszyfrowany_text ='';
  7. for($i = 0;$i<strlen($text);$i++)
  8. {
  9. $zaszyfrowany_text += $text{$i} ^ $klucz_szyfrujacy{$i % strlen($szyfr)}
  10. }
  11. //odszyfrowanie
  12. $text ='';
  13.  for($i = 0;$i<strlen($zaszyfrowany_text);$i++)
  14.  {
  15.  $text += $zaszyfrowany_text{$i} ^ $klucz_szyfrujacy{$i % strlen($szyfr)}
  16.  }
  17. ?>


jesli nie zrobiłem byka bo pisze z głowy powinno wszystko działać.
problem pojawia gdy mamy do czynienia z dwu bajtowymi znakami w utf np : ó

gdy zrobimy
  1. <?php
  2. $z = 'ó' ^ 'a';
  3. $z2 = $z ^ 'a';
  4. ?>

teoretycznie $z2 powinno mieć wartość "ó" ale nie ma dlatego że ó ma dwa bajty a "a" jeden (w utf-8). Rozwiązaniem byłoby gdyby pętla szła bit po bicie a nie znak po znaku. Prosze was o pomoc w zaimplemetowaniu takiej pętli.
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.