Создайте длинную двоичную строку, используя PACK in chunks в PHP

#php #pack #unpack

#php #пакет #распакуйте

Вопрос:

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

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

 // Pack EPOCH amp; 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  ;
}
  

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

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