Pooligans
26.08.2007, 12:58:09
Witam, mam nastepujacy problem. Mam strone na ktorej user podaje 3 liczby hex w inpucie a nastepnie wysyla formularzem do skryptu. Przyklad:
w inpucie ktos podaje dane:
1 - 45eaff18
2 - 1ee312c2
3 - 2c0e299b
skrypt wykonuje:
1+2*3
$Dec_Info1 = HexDec($Information1);
$Dec_Info2 = HexDec($Information2);
$Dec_Info3 = HexDec($Information3);
$Hex_ID = dechex($Dec_Info1 + $Dec_Info2 * $Dec_Info3);
Wynik tej operacji w php to B6046C80, a w rzeczywistosci powinien byc 0xE wiekszy czyli B6046C8E.
Czy php nie jest sobie w stanie poradzic z tak duzymi liczbami? Prosze o pomoc bo nie mam zielonego pojecia jak sobie z tym poradzic, jezeli ktos poda mi gotowe rozwiazanie, obiecuje ze zostanie wynagrodzony adekwatnie do zadania. Pozdrawiam
Kicok
26.08.2007, 15:52:31
PHP duże liczby konwertuje na
float, a co za tym idzie traci się trochę dokładności. Będziesz musiał użyć rozszerzenia
GMP" title="Zobacz w manualu PHP" target="_manual, np.:
<?php
$hex1 = '45EAFF18';
$hex2 = '1EE312C2';
$hex3 = '2C0E299B';
$val1 = gmp_init( "0x{$hex1}" );
$val2 = gmp_init( "0x{$hex2}" );
$val3 = gmp_init( "0x{$hex3}" );
$hexID = gmp_add( $val1, gmp_mul( $val2, $val3 ) );
?>
Pooligans
26.08.2007, 18:15:01
Niestety mam tylko zwykly hosting i nie moge instalowac zadnego oprogramowania
legorek
26.08.2007, 18:29:36
Troszkę pomyślunku. Zastanów się jak wykonujesz takie obliczenie na kartce (np algorytmem dodawania "w słupku") Potem zaimplementuj to w PHP.
Pooligans
26.08.2007, 18:47:05
Nie bede marnowal czasu na cos co powinno wykonac php. Najwieksza zagadka dlaczego to nie dziala?