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


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

大家好,我正在尝试制作一个可以编码和解码的脚本 FSK 频移键控

到目前为止,我遇到的问题是PHP警告:包():类型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中似乎不支持负数和浮点数有人可以帮我解决这个问题吗

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

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

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

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