Wątek przeniesiony 2019-01-11 22:14 z Java przez aurel.

writeChar w PHP

0

Jak napisać funkcję w writeChar (java.io.dataouputstream.writechar) w PHP ?

0

Co robi funkcja writechar?

0

Znalazłem rozwiązanie na problem.

Potrzebuje przekonwertować na PHP

0

A no to dobrze :) brawo Ty :)

0

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));
}
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 ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0