sp2ong pisze:Troche opisze problem wiecej. Otoz format pliku UAM jest binarny, ma swoj naglowek i poszczegolne rekordy maja swoja dl. miedzy innymi wspolrzedne w ukl 1992 zapisywane sa w 8 bajtach tzn 4 bajty na X i 4 bajty na Y. Wspolrzedne w ukladzie 1992 maja wyglad np
Kod:
565295 247969
te cyfry zamienia sie na HEX wiec mozemy dostac np
03C8A1 wiec po podzileniu ich na dwojki mamy 3 bajty
03 C8 A1 czwarty bajt uzupelniam 00
uzywam funkcji hexdec aby zamienic ja na dzisietna cyfre i tu pozniej rozne stosowalem techniki:
chr($a) lub sprintf('%c',$a)
rozbijanie tego na chr i sprintf troche niepotrzebnie komplikuje sprawę. poniższy kod zapisuje te dwie współrzędne tak jak trzeba binarnie do pliku i wydaje mi się, że o wiele prościej:
Kod:
$file = fopen("test.bin", "wb");
$x = 565295;
$y = 247969;
fwrite($file, pack('L', $x), 4);
fwrite($file, pack('L', $y), 4);
fclose($file);
to powinno załatwić sprawę. w razie wątpliwości,z
manuala można doczytać jeszcze, że zamiast "L" - który zapisuje 32 bit unsigned long w byte-order maszyny, można użyć "N", albo "V" żeby wymusić odpowiednio big albo little endian. z przykładu wygląda jakby to musiał być little endian, więc bezpieczniejsze może być użycie "V".Ostatnio zmieniony przez angelo dnia Pią, 28 Wrz 2007 13:01, w całości zmieniany 1 raz
Powrót do góry
[img]templates/subTrail/images/lang_polish/icon_beer.gif"%20width="59"%20height="18"%20alt="Postaw%20piwo%20autorowi%20tego%20posta"%20title="Postaw%20piwo%20autorowi%20tego%20posta[/img]
[img]templates/subTrail/images/lang_polish/icon_profile.gif"%20alt="Zobacz%20profil%20autora"%20title="Zobacz%20profil%20autora[/img] [img]templates/subTrail/images/lang_polish/icon_pm.gif"%20alt="Wyślij%20prywatną%20wiadomość"%20title="Wyślij%20prywatną%20wiadomość[/img]