首页 > 解决方案 > 在 PHP 中使用 PACK 在块中创建长二进制字符串

问题描述

我正在尝试在嵌入式设备和服务器之间进行通信,其中服务器代码是用 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++;
}

但是连接并没有按预期工作(正如在嵌入式设备上解包所证实的那样)。我怀疑某些“字节序”可能在起作用?

有人可以告诉我为什么简单的串联不起作用。另外,如何解决这个问题?

标签: phppackunpack

解决方案


推荐阅读