問題は、new Uint8Array()
JavaScriptで生成されたファイルを通常のファイル(ffmpegなどの他のプログラムで利用可能なファイル)に変換することです。
**バイナリまたは他の用語についてuint8の場合は、使用する正しい用語がわかりません...
JavaScriptには、ajax経由で送信するためにバッファをuint8に変換するfileReaderがあります。
送信されるのは次のような配列です23,42,69,333,99
...
fopen(pack("C*", ...$uintARRAY),"wb")
PHPでは、書き込みモードとバイナリモードの両方で「wb」を呼び出すことができます。
最終結果は、次のような「バイナリ」コンテンツを含むファイルです。
Efl££BÜÅB˜ÅBÚÅBÛÅBÇàmatroskaBáÅBÖÅSÄgˇˇˇˇˇˇˇI©fô*◊±ÉB@MÄÜChrome
Linux bashスクリプトまたはシェルコマンドで次のようなものは何ですか?pack("C*", ...$uintARRAY)
答え1
あなたは次のことをします:
values=(1 2 255)
perl -e 'print pack "C*", @ARGV' -- "${values[@]}"
(またはそれに対応するphp -r
)。
この値を使用してバイトを印刷します。
ほとんどのシステムには、コマンドに渡される引数の数とサイズに制限があります。
に切り替えるオプションがある場合は、zsh
次のことができます。
set +o multibyte
printf %s ${(#)values}
組み込みのため、printf
上記の制限に影響されません。
bash
+を使用して引数の数をperl
制限するには、引数の代わりにstdinを介して数値リストを指定できます。execve()
(( ${#values[@]} )) && printf '%s\n' "${values[@]}" |
perl -ne 'printf "%c", $_'
perl
どちらもzsh
1、2.55e2、0xffなどの数字を受け入れます。どちらの場合も、0177は8進数ではなく10進数として解釈されますが、zshを使用して変更できますset -o octalzeroes
。さまざまな進数で数字や2進数を表すなど、zsh
より多くの記号をサポートします。6#123
0b1001
外部ユーティリティをフォークまたは依存せずにこれを行うには、bash
次のことを実行できます。
printf -v format '\\%o' "${values[@]}"
printf "$format"
( の場合はbash
8 進数であり、 、 などの数値表現をprintf
サポートしませんが、 または を使用してその文字の値を指定できます 1)。0123
1e2
0b100
2#100
"a
'a
0141
1シングルバイト文字エンコーディング(ASCIIベースのシステムの場合)を使用するロケールのバイト値、またはマルチバイトa
文字エンコーディング(GNUシステムのUnicodeコードポイント)を使用するロケールのwchar_t値