Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Operowanie na int wiekszych niz PHP_INT_MAX
enki
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.06.2012

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


Witam wszystkich.

Dostalem ostatnio zadanie do wykonania w ktorym musze przekonwertowac liczby w hex np 0x10000000000000 na int, dodac je razem i zwrocic wartosc w hex. Nie znam sie na PHP i zdziwiony jestem, ze nie moge nic znalezc konkretnie w Google oprocz uzycia bcadd albo podobnych, ktore wyprobowalem i raczej nie dzialaja albo robie cos zle.

Generalnie potrzebuje dodac np. 99999999999999999999999999999999999 + 5555555555555555555555555555555555 i pozniej przekonwertowac to na hex.

Prosilbym o jakas podpowiedz czy sa jakies moduly, ktore umozliwia mi zrobienie tego jak np. w Perlu bigint, ktory pozwala znacznie zwiekszyc wartosc.
Chcialbym dodac, ze predkosc nie gra roli.

Ten post edytował enki 15.06.2012, 23:50:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post
Post #2





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

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


Właściwie to z popularniejszych rozwiązań dla PHP to jedynie BC Math i GMP: http://www.php.net/manual/pl/refs.math.php
Widocznie musiałeś coś źle zrobić skoro Ci nie działało, pokaż kod.
Go to the top of the page
+Quote Post
enki
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.06.2012

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


  1. <?php
  2.  
  3. $a = '65465465465465465455555555555555555555555654564';
  4. $b = '32412132132132132132';
  5.  
  6. echo bcadd($a, $b);
  7.  
  8. ?>
  9.  


bcadd dziala pieknie - problem z glowy, teraz tylko potrzebuje zamienic taka wartosc na hex i odwrotnie.

Ten post edytował enki 16.06.2012, 02:08:03
Go to the top of the page
+Quote Post
Crozin
post
Post #4





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

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


base_convert

Ten post edytował Crozin 16.06.2012, 02:19:26
Go to the top of the page
+Quote Post
enki
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.06.2012

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


z 87687687677777777800099008 wychodzi 48889712f33a3000000000 , a potrzebuje dokladna wartosc

Znalazlem cos takiego, sprobuje to zrozumiec (IMG:style_emoticons/default/smile.gif) :

  1. function gmp_hexdec($n) {
  2. $gmp = gmp_init(0);
  3. $mult = gmp_init(1);
  4. for ($i=strlen($n)-1;$i>=0;$i--,$mult=gmp_mul($mult, 16)) {
  5. $gmp = gmp_add($gmp, gmp_mul($mult, hexdec($n[$i])));
  6. }
  7. return $gmp;
  8. }
  9.  
  10. print gmp_strval(gmp_hexdec("D5CE3E462533364B"));
  11.  


Ten post edytował enki 16.06.2012, 02:56:08
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: 25.08.2025 - 09:51