我已成功连接到 Apple 的反馈 APNS 服务器,但我不确定如何解压缩从 fread() 获得的二进制数据。有谁知道如何做到这一点?文档说前 4 个字节是时间戳,接下来的 2 个是令牌长度,其余的是设备令牌。
在调用 fread 之后,如何将这些信息解压缩为可读字符?
我已成功连接到 Apple 的反馈 APNS 服务器,但我不确定如何解压缩从 fread() 获得的二进制数据。有谁知道如何做到这一点?文档说前 4 个字节是时间戳,接下来的 2 个是令牌长度,其余的是设备令牌。
在调用 fread 之后,如何将这些信息解压缩为可读字符?
一旦你有了你的二进制流,你可以像这样处理它:
while ($data = fread($stream, 38)) {
$feedback = unpack("N1timestamp/n1length/H*devtoken", $data);
// Do something
}
$feedback 将是一个包含元素“timestamp”、“length”和“devtoken”的关联数组。
实际上想通了,这似乎更可靠:
$arr = unpack("H*", $devconts);
$rawhex = trim(implode("", $arr));
$feedbackTime = hexdec(substr($rawhex, 0, 8));
$feedbackDate = date('Y-m-d H:i', $feedbackTime);
$feedbackLen = hexdec(substr($rawhex, 8, 4));
$feedbackDeviceToken = substr($rawhex, 12, 64);