私はファイルからバイトを読み込み、それらを処理。その後、パックされたバイトを保存したいと思います。使用PHP、プロセスとパックアレー
バイト文字列に混在するオブジェクト/タイプを配列に変換するために推奨さ+汎用的な方法は何ですか?私の場合、int型とstring型の配列、pack型a、C、x。
簡単な例:
// $bytes = fread($handle, 100);
$bytes = "437XYZ25.011001DBEFORE ....";
$unpackString = "a3CPN/x8spare/CDSC/x4spare/a32OPT";
$unpacked = unpack($unpackString, $bytes);
var_dump($unpacked);
/*
array(3) {
["CPN"]=> string(3) "437"
["DSC"]=> int(49)
["OPT"]=> string(32) "BEFORE "
}
*/
// example of processing
$unpacked["DSC"] = 12;
$unpacked["OPT"] = "AFTER ";
// pack + write the result
// $packString = "a3x8Cx4a32";
$packTypes = ["a3","x8","C","x4","a32"];
$packFields = [ $unpacked["CPN"], null, $unpacked["DSC"], null, $unpacked["OPT"] ];
// ...
更新:私はどこで、どのようなタイプに属するどのようなコンテンツ明確であることを確認する$packTypes
と$packFields
で$packString
を交換した簡単な例では。
質問は何ですか?あなたは、配列を展開する 'unpack'を使用し、なぜあなたは再びそれをパックする' pack'を使用することはできませんか?問題は 'pack'が単一の配列の代わりに引数を受け入れるという事実ですか? –
確かに。配列を使ってパックする方法。 – wivku