问题是关于new Uint8Array()
从 javascript 生成的转换为普通文件(可与 ffmpeg 等其他程序一起使用的文件)
** 如果它是 uint8 到二进制或其他一些术语,我不知道使用正确的术语...
在 javascript 中,我有一个 fileReader 缓冲区转换为 uint8 以通过 ajax 发送...
发送的是这样的数组23,42,69,333,99
...
在 PHP 中,我可以fopen(pack("C*", ...$uintARRAY),"wb")
为写入和二进制模式调用“wb”......
最终结果是一个包含这种“二进制”内容的文件:
Efl££BÜÅB˜ÅBÚÅBÛÅBÇàmatroskaBáÅBÖÅSÄgˇˇˇˇˇˇˇI©fô*◊±ÉB@MÄÜChrome
在 linux bash 脚本或 shell 命令中,什么是等效的pack("C*", ...$uintARRAY)
你会做这样的事情:
(或与 的等价物
php -r
)。打印具有这些值的字节。
请注意,大多数系统对传递给命令的参数的数量和大小都有限制。
如果切换到
zsh
是一个选项,你可以这样做:由于
printf
是内置的,它不受上述限制的影响。使用
bash
+perl
来解决execve()
参数数量的限制,您可以通过标准输入而不是参数提供数字列表:两者都
perl
将zsh
接受数字,例如 1、2.55e2、0xff。对于这两种情况,0177 都被解释为十进制,而不是八进制,尽管在 zsh 中可以使用set -o octalzeroes
.zsh
支持更多的符号,例如6#123
以不同的基数表示数字或0b1001
二进制。要在不分叉或不依赖外部实用程序的情况下执行此操作,在 中
bash
,您可以执行以下操作:(对于
bash
'sprintf
,是八进制数,不支持 , , 等数字表示形式。或者0123
可以用来指定相应字符的值¹)。1e2
0b100
2#100
"a
'a
¹ 使用单字节字符编码的语言环境中的字节值(因此
0141
在a
基于 ASCII 的系统上)或使用多字节字符编码的语言环境中的 wchar_t 值(GNU 系统上的 Unicode 代码点)