Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Heksadecymalne na dziesiętne
rudald
post 2.01.2011, 23:43:01
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Dla "potrenowania" myślenia stwierdziłem, że napiszę program przeliczający systemy liczbowe. System binarny już opracowałem w dwie strony i teraz myślę nad heksadecymalnym

  1. <?php
  2. $b="19a";
  3. $c=str_split($b,1);
  4. $ilosc=strlen($b);
  5. $liczba2=0;
  6. print_r($d);
  7. $n=0;
  8. if(in_array("A",$d) or (in_array("a",$d)))
  9. {
  10.  
  11. $d[0]=10;
  12. for ($i=1; $i<=$ilosc; $i++)
  13. {
  14. echo $liczba=pow(16,$n)*$d[$n];
  15. echo '<br>';
  16. $liczba2=$liczba+$liczba2;
  17. $n++;
  18. }
  19. echo 'jest a';
  20. }
  21. echo $liczba2;
  22.  
  23. ?>


Więc generalnie mam problem taki: Chciałbym, żeby program wyszukiwał na którym miejscu znajduje się element alfabetu. Jest może taka funkcja? Szukałem, w funkcjach 'array' ale nie zdołałem znaleźć lub pominąłem ją przypadkiem.
By później móc podnieść ją odpowiednio do potęgi : ).

Wiem, że będę musiał zmienić konstrukcję warunku, bo musiałbym się nieco namęczyć, a przecież program ma być efektowny i efektywny. Litera A dla przykładu

Ten post edytował rudald 2.01.2011, 23:44:57
Go to the top of the page
+Quote Post
wookieb
post 2.01.2011, 23:46:55
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




array_search
strpos

http://pl2.php.net/hexdec


--------------------
Go to the top of the page
+Quote Post
Crozin
post 2.01.2011, 23:48:20
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Trenowanie myślenia zacznij z innej strony. Skoro w PHP jest taka funkcja jak hexdec czy bardziej ogólna base_convert, to można by podejrzeć ich źródła (w końcu PHP jest projektem OpenSource). Możesz też w Google'a wklepać hexadecimal decimal conversion algorithm.

Na 100% uzyskasz dużo lepsze (bo bardziej wyczerpujące) informacje. O zaoszczędzonym czasie nie wspominając.
Go to the top of the page
+Quote Post
rudald
post 12.01.2011, 12:52:27
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Szukam szukam i znaleźć nie potrafię

mamy tablicę a w niej liczba 19a
po zamienieniu kolejności
Array ( [0] => a [1] => 9 [2] => 1 )

jest jakaś funkcja, która sprawdza czy w liczbie istnieje litera i która zwraca jaka to litera ?
Dziękuję z góry za odpowiedzi

Ten post edytował rudald 12.01.2011, 13:09:25
Go to the top of the page
+Quote Post
Crozin
post 12.01.2011, 20:24:47
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Dlaczego się upierasz, żebym korzystał z czego innego ?
Upieram się byś przeanalizował istniejące już rozwiązania, zrozumiał zasadę ich działania, a następnie zaaadpotował je do swoich potrzeb, czyli przerobił na skrypt PHP.

Cytat
Zaplanowałem sobie SAM program i na jego skróceniu będzie mi zależało jak go napiszę : ), więcej się nauczę - zaufaj mi.
Ty masz to zrobić sam, po prostu zamiast wypytywać nas o to czy istnieje coś tam, albo jak zrobić coś tam możesz samemu zajrzeć w dołączone źródła. Nie masz ich bezmyślnie kopiować.

Cytat
jest jakaś funkcja, która sprawdza czy w liczbie istnieje litera i która zwraca jaka to litera ?
Tak, ctype_alpha - ale równie dobrze możesz wykorzystać operatory większości i mniejszości.

Ten post edytował Crozin 12.01.2011, 20:25:20
Go to the top of the page
+Quote Post
rudald
post 13.01.2011, 00:24:44
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Przepraszam, za to że naskoczyłem - źle zrozumiałem treść Twojej wypowiedzi.
Wygląda na to, że w jakiś sposób skorzystałem z Twej rady - porównałem tablice i podstawiłem używając str_replace.
Pisałem znów program odwrotny i mam błąd - mianowicie:
Z liczby 39435 w systemie Hex wychodzi 9AB a ma wyjść 9A0B pomija mi 0.

  1. <?php
  2. echo $b=39435;
  3. echo '<br>';
  4. $c=$b;
  5.  
  6. do
  7. {
  8. for($i=0; $b>=16; $i++)
  9. {
  10. echo $b=floor($b/16);
  11. echo '<br>';
  12. }
  13. $n++;
  14. $d[$n]=$b;
  15. $liczba=pow(16,$i);
  16. echo $c=$c-$liczba*$b;
  17. $b=$c;
  18. echo '<br>';
  19. }
  20. while($b>=1);
  21.  
  22. print_r($d);
  23. ?>

po wyświetleniu zwraca:
39435
2464
154
9
2571
160
10
11
0
Array ( [1] => 9 [2] => 10 [3] => 11 )

Orientujesz się może gdzie jest błąd ?


Ten post edytował rudald 13.01.2011, 00:26:06
Go to the top of the page
+Quote Post
Crozin
post 13.01.2011, 07:41:29
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Szczerze powiedziawszy to ciężko mi pojąć co Ty tam dokładnie robisz (może dlatego, że ledwo co wstałem).

Przyjrzyj się temu: http://ideone.com/Pjsi1
Go to the top of the page
+Quote Post
rudald
post 13.01.2011, 22:31:54
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Zmiażdżyłeś mnie tym kodem - sam pisałeś ?
Wszystko tam jasne i logiczne, ale powiem Ci, że ja naprawię ten swój biggrin.gif, tak dla własnej satysfakcji.
Bardzo dziękuję za zainteresowanie : ).

Już potrafię wyjaśnić w czym tkwi problem.
Dzielę liczbę przez 16 aż będzie w zakresie 0-16 i ma ją wpisać do tablicy, wszystko gra póki nie pojawi się liczba z tego zakresu, bo on jej nie będzie dzielił tylko wpisywał, ale zawsze wyjdzie z tego dzielenia 0. Hm jak taki warunek tu wrzucić ?

Ten post edytował rudald 13.01.2011, 22:45:49
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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 17:44