【问题标题】:PHP Warning: pack(): Type h: illegal hex digit - line 37PHP 警告:pack():类型 h:非法十六进制数字 - 第 37 行
【发布时间】:2013-09-06 03:30:49
【问题描述】:

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

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

【问题讨论】:

  • 收到警告时 $vv 的值是多少?
  • $vv 的值为-1.6694871264829E-8

标签: php pack


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2014-09-25
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多