Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja bindec() z wynikiem w postaci ciągu
Forum PHP.pl > Forum > PHP
elektromis
Witam mam takie pytanie/ problem pobieram z zegara sterujacego oswietleniem liczbe DEC gdzie dni tygodnia sa w postaci binarnej np, jesli jakis program ma dzialac od Poniedzialku do Piątku to otrzymuje wartosc 31 ( suma 1 (pn) + 2 (wt) + 4 (śr) + 8 (cz) + 16 (pt). Bindec(31); zwróci mi 00011111
Pytanie? bindec(Liczbabinarna)[nr bitu ] = zwraca prawda lub fałsz; Czy da sie zrobic cos takieg bindec(Liczbabinarna) = ciąg 1,2,3,4,5 w postaci dwoch trzech linijek tak aby nie bawiac sie w matematyke
Prosze o porade. Dziękuje
trueblue
  1. $a=17;
  2. for($i=0;$i<5;$i++){
  3. if($a & pow(2,$i)) echo ($i+1);
  4. }
Salvation
Skoro masz wartość binarną, to sprawa prosta...
  1. $bin = '00011111';
  2.  
  3. foreach (str_split(strrev($bin)) as $i => $char) {
  4. if ('1' === $char) {
  5. echo $i + 1;
  6. }
  7. }

Można dołożyć jeszcze słownik, żebyś wiedział co oznaczają zwrócone liczby. W tym przypadku 1 - 5.
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.