php将位字符串保存到文件

php将位字符串保存到文件,php,file,binary,Php,File,Binary,我试图将一串位保存到二进制文件中 这是我的绳子 0100100101001110010100000101010101010100001100010000000000000000010010010100111001010000010101010101010000110010000000000000000001001001010011100101000001010101010101000011001100000000000000000100100101001110010100000101010101

我试图将一串位保存到二进制文件中

这是我的绳子

01001001010011100101000001010101010101000011000100000000000000000100100101001110010100000101010101010100001100100000000000000000010010010100111001010000010101010101010000110011000000000000000001001001010011100101000001010101010101000011010000000000000000000100100101001110010100000101010101010100001101010000000000000000010010010100111001010000010101010101010000110110000000000000000001001001010011100101000001010101010101000011011100000000000000000100100101001110010100000101010101010100001110000000000000000000010100100100010101001100010000010101100100110001000000000000000001010010010001010100110001000001010110010011001000000000000000000101001001000101010011000100000101011001001100110000000000000000010100100100010101001100010000010101100100110100000000000000000001010010010001010100110001000001010110010011010100000000000000000101001001000101010011000100000101011001001101100000000000000000010100100100010101001100010000010101100100110111000000000000000001010010010001010100110001000001010110010011100000000000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110001001100000011000100110000001100010011000000110001001100000011000100110000001100010011000000110001001100000011000100110000001011010011001100101101001100110010110100110011001011010011001100101101001100110010110100110011001011010011001100101101001100110011001100110010001100110011001000110011001100100011001100110010001100110011001000110011001100100011001100110010001100110011001000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000
这就是我用来写它的代码

$fp = fopen('io2454929593', 'wb');
fwrite($fp, pack('C*', $bytes));
fclose($fp);
我得到的只是一个1字节长的文件,但它应该长很多。我做错了什么?

您可以尝试以下方法:

$s = '0100100101001110'; // your binary string

$chars = array_map('bindec', str_split($s, 8));
array_unshift($chars, 'C*');
echo call_user_func_array('pack', $chars);

免责声明:此代码仅说明如何调用
pack
;它不应该用于大字符串。

在“打包”之前,可能需要先将数组内爆成唯一的字符串查看PHP手册,似乎
pack
的参数只能是格式的单个参数(在您的示例中是C*),然后是一个无限参数列表,每个参数都应该由一个字节组成。试试这个:
pack('C*',0100101001110等)
fairly:)不过,对于2048个字符的示例,它只传递257个参数来打包,仍然没有什么大问题