02 12 17 00
teraz to trzeba zapisac na ASCII i niby jest OK ale kiedy trafia sie cyfry powyzej 128 zapis do pliku znakow ascii cos miesza sie.
tzn
- Kod: Zaznacz cały
chr($a)
Moderator: Spider
02 12 17 00
teraz to trzeba zapisac na ASCII i niby jest OK ale kiedy trafia sie cyfry powyzej 128 zapis do pliku znakow ascii cos miesza sie.
chr($a)
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)
wspolrzedna 587833 po zamianie ma na hex 08F839 i po odwroceniu bajtow i zapisaniu w pliku
sprintf('%c%c%c%c%c%c',hexdec(39),hexdec(F8),hexdec(08),0,0);
musi byc:
39 F8 08 00 00 4F gdzie 4F litera O od nazwy nastepnego pola (nazwa waypoint)
po obejrzeniu pliku mamy
39 F8 08 00 96 00 4F
pojawil znak o kodzie HEX 96
sp2ong napisał(a):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: Zaznacz cały
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)
$file = fopen("test.bin", "wb");
$x = 565295;
$y = 247969;
fwrite($file, pack('L', $x), 4);
fwrite($file, pack('L', $y), 4);
fclose($file);
sp2ong napisał(a):Zgadza sie jest OK
sp2ong napisał(a):wstawia dodatkwe 0 pomiedzy wspolrzednymi jest
F8 20 07 00 00 96 BC 08 00
zamiast F8 20 07 00 96 BC 08 00
angelo napisał(a):sp2ong napisał(a):wstawia dodatkwe 0 pomiedzy wspolrzednymi jest
F8 20 07 00 00 96 BC 08 00
zamiast F8 20 07 00 96 BC 08 00
cóż. z czubka głowy nic nie wiem, jak mawiają hamerykanie. musiałbym zobaczyć kod, dane wejściowe i tak dalej :]
jaki jest $x, $y, $thisline1 jak wygląda? jedno mogę Ci powiedzieć od razu, że nie ma sensu przekazywać 4 do f-cji pack.
sp2ong napisał(a):no 4 uzylem tak jak podales.
Warning: pack(): 1 arguments unused in ... on line ...
$uamlatlon="{lat}{lon}";
$thisline1=$uamlatlon;
$x= 467192;
$y= 572566;
$thisline1 = mb_ereg_replace('{lat}',pack('L',$y),$thisline1);
$thisline1 = mb_ereg_replace('{lon}',pack('L',$x),$thisline1);
$file = fopen("test.bin", "wb");
fwrite($file, $thisline1);
fclose($file);
96 BC 08 00 F8 20 07 00
angelo napisał(a):wygląda jakby bład był gdzie indziej.
BB 22 D5 3F 01 F8 20 96 4F 50 30 ....
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość