Создать длинную двоичную строку, используя PACK в кусках в PHP - PullRequest
2 голосов
/ 14 марта 2019

Я пытаюсь установить связь между встроенным устройством и сервером, где код сервера написан на PHP. Я смог сделать это с помощью функции pack (), с которой я смог работать. Однако теперь я хочу отправить действительно длинный пакет, и сам пакет таков, что содержит N записей некоторого расписания. Поэтому мне нужно отправить информацию о «N» перед повторением этих много раз, а затем отправить каждое расписание.

Теперь я пытался понять, может ли объединение вывода pack () помочь мне выполнить задачу, с тех пор я смогу сделать что-то вроде этого:

// Pack EPOCH & Number of Schedules
$pkt = pack("Nn", time(), $num_schedule);
// Now iterate
$i = 0;
while($i < $num_schedule) {
   $schedule_time = $schedule[$i]["time"]  // Start Time in epoch for one day
   $schedule_weekday = $schedule[$i]["weekday"]  // Contains 0-6
   // Pack individual entry, concatenate!
   $pkt .= pack("nn", $schedule_time, $weekday);  
   $i++;
}

Но конкатенация не работает должным образом (что подтверждается распаковкой на встроенном устройстве). Я подозреваю, что в игре может быть что-то вроде "endian-ness"?

Может кто-нибудь сказать мне, почему простая конкатенация не работает. Кроме того, как решить эту проблему?

...