You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何将WAV文件二进制转为单个字符元素的数组?

解决方案:将WAV文件的二进制位存入单个字符数组

嘿,这事儿不难!你只需要在现有代码基础上,把每个字节生成的8位二进制字符串拆成单个字符,再逐个(或者批量)加入到目标数组里就行。我给你修改好完整代码,再给你解释关键步骤:

// 初始化存储每个二进制位的数组
$bitArray = [];

// 读取WAV文件内容
$filename = "rock.wav";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle); // 别忘了关闭文件句柄哦!

// 遍历每个字节
for($i = 0; $i < strlen($contents); $i++) {
    $char = $contents[$i];
    // 转成十进制再转成8位补零的二进制字符串
    $binaryStr = str_pad(decbin(ord($char)), 8, "0", STR_PAD_LEFT);
    // 把8位字符串拆成单个字符的数组,合并到总数组里
    $bitArray = array_merge($bitArray, str_split($binaryStr));
}

// 测试:打印前20个元素看看效果
print_r(array_slice($bitArray, 0, 20));

关键步骤解释:

  • 首先初始化一个空数组$bitArray,用来存每个单独的0/1字符。
  • 用str_split($binaryStr)把8位的二进制字符串直接拆成包含8个单个字符的子数组,比如"01010010"会变成['0','1','0','1','0','0','1','0']。
  • 用array_merge把每个子数组的元素合并到总数组里,这样最终$bitArray的每个索引就对应一个二进制位的字符了。

如果你不想用array_merge,也可以用循环逐个添加,效果是一样的:

// 替代array_merge的写法
foreach(str_split($binaryStr) as $bit) {
    $bitArray[] = $bit;
}

这样处理完之后,$bitArray就是你想要的——每个元素都是单个的'0'或'1'字符,顺序和文件字节的二进制位完全对应。

内容的提问来源于stack exchange,提问作者hizz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:29:15