0

我有一个WebSocket编码器:

print_r(frameEncode("How can I convert a byteArray to String in PHP?"));

    function frameEncode($message) {
        $messageBytes = array();
        $messageLength = strlen($message);

        $messageBytes[0] = 129;

        if ($messageLength < 126) {
            $messageBytes[1] = $messageLength;
        } else if ($messageLength <= 65535) {
            $messageBytes[1] = 126;
            $messageBytes[2] = ($messageLength >> 8) & 255;
            $messageBytes[3] = $messageLength & 255;
        } else {
            $messageBytes[1] = 127;
            $messageBytes[2] = ($messageLength >> 56) & 255;
            $messageBytes[3] = ($messageLength >> 48) & 255;
            $messageBytes[4] = ($messageLength >> 40) & 255;
            $messageBytes[5] = ($messageLength >> 32) & 255;
            $messageBytes[6] = ($messageLength >> 24) & 255;
            $messageBytes[7] = ($messageLength >> 16) & 255;
            $messageBytes[8] = ($messageLength >> 8) & 255;
            $messageBytes[9] = $messageLength & 255;
        }

        return pack("C*", $messageBytes) . $message;
    }

如何$messageBytes在函数末尾将 转换为字符串?数组值只是被忽略了pack()

4

2 回答 2

0

您可以像这样使用call_user_func_array

call_user_func_array('pack', array_merge(array('C*'), $messageBytes)))
于 2013-08-14T08:55:36.260 回答
0
return pack("C*", implode(' ', $messageBytes)) . $message;
于 2013-08-14T08:55:49.857 回答