Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
#1 · Zasláno: 8. 4. 2011, 20:54:29 · Upravil/a: Darker
Rozebírám soubor a mělo by v něm být spousta adres sektorú. Jsou ve formátu čísla se znaménkem.
Pokud jsem princip dobře pochopil, FF FF FF by mělo být -1 a 00 00 00 by mělo být prostě 0. Jak mám správně převést ostatní čísla? for($i=0;$i<count($MSAT);$i++){ $integer=$MSAT[$i]; $MSAT[$i]=4294967294-hexdec(big_endian($integer)); } Tohle nefungovalo. Z 00 00 01 55 pak vznikne 4294966953. Z FF FF FF FF ale vznikne -1 jak má. |
||
Keeehi Profil |
#2 · Zasláno: 8. 4. 2011, 23:15:05 · Upravil/a: Keeehi
|
||
TomášK Profil |
#3 · Zasláno: 9. 4. 2011, 00:08:13
Pro uložení záporných čísel se zpravidla používá dvojkový doplněk. Ze způsobu, jakým se tvoří, určitě půjde vykoukat způsob, jak ho přečíst. Minimálně je to návod, jak poznat, jestli je číslo kladné nebo záporné.
|
||
Darker Profil |
#4 · Zasláno: 9. 4. 2011, 16:46:16 · Upravil/a: Darker
Dík, Tomáši, to je přesně ono.
Výsledná funkce je: function hex2dec($hex){ $integer=big_endian($hex); $zaklad=pow(16,strlen($hex)); $return= (int)hexdec($integer[0])>7?-1*($zaklad-hexdec($integer)):hexdec($integer); return $return; } |
||
Časová prodleva: 13 let
|
0