Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Operowanie na int wiekszych niz PHP_INT_MAX
Forum PHP.pl > Forum > Przedszkole
enki
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.
Crozin
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.
enki
  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.
Crozin
base_convert
enki
z 87687687677777777800099008 wychodzi 48889712f33a3000000000 , a potrzebuje dokladna wartosc

Znalazlem cos takiego, sprobuje to zrozumiec 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.  
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.