Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]zmienna bit po bicie
pawel.b
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 5.02.2009
Skąd: Kraków

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


witam

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

z góry dzięki za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://pl.php.net/language.operators.bitwise


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pawel.b
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 5.02.2009
Skąd: Kraków

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


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

Ten post edytował pawel.b 8.02.2009, 17:53:04
Go to the top of the page
+Quote Post
mls
post
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


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.

Ten post edytował mls 9.02.2009, 00:21:29


--------------------
Go to the top of the page
+Quote Post
f1xer
post
Post #5





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


ż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

Ten post edytował f1xer 10.02.2009, 17:55:17


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
pawel.b
post
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 5.02.2009
Skąd: Kraków

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


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.

Ten post edytował pawel.b 10.02.2009, 18:16:37
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 14:19