Jak napisać funkcję w writeChar
(java.io.dataouputstream.writechar
) w PHP ?
Co robi funkcja writechar?
Znalazłem rozwiązanie na problem.
Potrzebuje przekonwertować na PHP
A no to dobrze :) brawo Ty :)
Sory kliknąłem "enter" i mi dodało za szybko poprzedni post.
chodziło o
Kod który potrzebuję przepisać na PHP
private int getInt(int value) {
final ByteBuffer bb = ByteBuffer.allocate(Integer.SIZE/8);
bb.putInt(value);
bb.order(ByteOrder.LITTLE_ENDIAN);
return(bb.getInt(0));
}
@AnyKtokolwiek: może i tak.
Ogólnie z JAVY jestem zielony. Chciałbym generować plik upi
/ rupi
(plik POI dla nawigacji Sygic) z bazy danych.
Tutaj jest jakiś kod który odczytuje dane z pliku OV2 (Tom Tom) i tworzy plik odpowiedni dla nawigacji Sygic (upi) | kodu na GitHub'ie
Mój kod w PHP'ie wydaje się działać poprawnie ale jeszcze nie jest skończony.
class Rupi {
/*
$name -> nazwa pliku poi
$poi -> tablica array np. array(
array('lat'=>0.0000, 'lng'=>0.0000,'label'=>'Abc... POI'),
array('lat'=>0.0000, 'lng'=>0.0000,'label'=>'Abc... POI #2'),
);
*/
public static function export($name, $poi) {
echo self::writeByte((strlen($name)*2)+2);
echo self::writeString(self::getBytes($name));
echo self::writeChar(0);
#$recfiller = [];
#echo self::write($recfiller);
echo self::writeByte((strlen($name)*2)+2);
echo self::writeString(self::getBytes($name));
echo self::writeChar(0);
foreach($poi as $line) {
echo self::writeByte(3);
#$len = 1 + 4 + 8 + (strlen($line['label']) * 2);
#echo self::writeInt($len);
echo self::writeInt(round($line["lng"] * 100000));
echo self::writeInt(round($line["lng"] * 100000));
echo self::writeString(self::getBytes($line['label']));
}
}
static function writeByte($b) {
return pack("c", $int);
}
static function writeChar($char) {
return pack("C", $char);
}
static function writeString($bytes) {
$out = "";
for($a = 0;$a < count($bytes); ++$a) {
$out.=self::writeByte($bytes[$a]);
$out.=self::writeByte(0);
}
return $out;
}
static function getBytes($str) {
$out = [];
for($a = 0;$a < strlen($str); ++$a) {
$out[] = ord(substr($str,$a,1));
}
return $out;
}
static function writeInt($v) {
$out = self::writeByte(self::shiftRight3($v , 24) & 0xFF);
$out .= self::writeByte(self::shiftRight3($v , 16) & 0xFF);
$out .= self::writeByte(self::shiftRight3($v , 8) & 0xFF);
$out .= self::writeByte(self::shiftRight3($v , 0) & 0xFF);
return $out;
}
static function shiftRight3($a ,$b){
if(is_numeric($a) && $a < 0){
return ($a >> $b) + (2<<~$b);
} else {
return ($a >> $b);
}
}
}
Ewentualnie jak by ktoś był chętny do napisania ODPŁATNIE
funkcji lub klasy w PHP'ie, która by generowała poprawny plik o rozszerzeniu .upi z tablicy array.
Ktoś chętny ?