PHP警告:pack():输入h:非法的十六进制数字 - 第37行

时间:2013-09-06 03:30:50

标签: php pack

大家好,我正在尝试编写一个可编码的脚本。解码FSK频移键控

我到目前为止遇到的问题是PHP警告:pack():输入h:非法的十六进制数字 - 第37行

这是我的代码

$RATE = 44100;
$maxVol = pow(2,15)-1.0;
$data = "";

for ($x=0; $x<=$RATE*3; $x++){


    $vv = $maxVol*sin(2*pi()*$x*500/$RATE); #500Hz
    $data+=pack('h',$vv);  #this is line 37

}

echo $data;

在php中打包似乎不支持负数&amp;彩车 请有人帮我解决这个问题

1 个答案:

答案 0 :(得分:2)

h格式代码将输入指定为十六进制字符串。很难从错误中判断出这一点,但单词-digit之间的line实际上是导致错误的字符(即它不是消息中的分隔符)。

PHP Warning: pack(): Type h: illegal hex digit - line 37
                                               ^

换句话说,您的输入被解释为包含-字符的字符串,该字符不是合法的十六进制数字(0123456789abcdef)。

如果没有更多信息,很难就解决问题提出任何具体建议。至少,您需要查看PHP的pack实现。