【问题标题】:php save string of bits to filephp将位字符串保存到文件
【发布时间】:2012-05-11 15:42:56
【问题描述】:

我正在尝试将一串位保存到二进制文件中。

这是我的字符串

01001001010011100101000001010101010101000011000100000000000000000100100101001110010100000101010101010100001100100000000000000000010010010100111001010000010101010101010000110011000000000000000001001001010011100101000001010101010101000011010000000000000000000100100101001110010100000101010101010100001101010000000000000000010010010100111001010000010101010101010000110110000000000000000001001001010011100101000001010101010101000011011100000000000000000100100101001110010100000101010101010100001110000000000000000000010100100100010101001100010000010101100100110001000000000000000001010010010001010100110001000001010110010011001000000000000000000101001001000101010011000100000101011001001100110000000000000000010100100100010101001100010000010101100100110100000000000000000001010010010001010100110001000001010110010011010100000000000000000101001001000101010011000100000101011001001101100000000000000000010100100100010101001100010000010101100100110111000000000000000001010010010001010100110001000001010110010011100000000000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110001001100000011000100110000001100010011000000110001001100000011000100110000001100010011000000110001001100000011000100110000001011010011001100101101001100110010110100110011001011010011001100101101001100110010110100110011001011010011001100101101001100110011001100110010001100110011001000110011001100100011001100110010001100110011001000110011001100100011001100110010001100110011001000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000

这是我用来编写它的代码。

$fp = fopen('io2454929593', 'wb');
fwrite($fp, pack('C*', $bytes));
fclose($fp);

我得到的只是一个 1 字节长的文件,但它应该更长。我做错了什么?

【问题讨论】:

  • 可能你需要在“pack”之前将数组内爆到一个唯一的字符串中
  • 查看 PHP 手册,pack 的参数似乎只能是格式的单个参数(在您的情况下为 C*),然后是无限的参数列表,每个参数都应该由一个字节组成。试试这个:pack('C*',01001001,01001110 etc)

标签: php file binary


【解决方案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;它不应该用于大字符串。

【讨论】:

  • 很公平 :) 不过,对于 2048 个字符的示例,它只会传递 257 个参数来打包,仍然没有什么大不了的 IMO :D
猜你喜欢
  • 2014-02-11
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
相关资源
最近更新 更多