【问题标题】:Reading binary file in php and converting it into string在php中读取二进制文件并将其转换为字符串
【发布时间】:2012-06-25 21:33:34
【问题描述】:

我为此花了将近一天的时间,但没有成功。

我想做的是,我有一个二进制文件“data.dat”

我想读取文件内容并将其以文本格式输出到 php 中的“data.txt”中。

我尝试了 php 的 unpack 函数,但需要将类型作为第一个参数提及(可能是我错了,php 新手)。

$data = fread($file, 4); // 4 is the byte size of a whole on a 32-bit PC.     
$content= unpack("C", $data);    //C for unsigned charecter , i for int and so on...

但是如果我不知道我正在读取的文件中存储了什么类型的数据怎么办?

这个功能因为类型而限制了我。

我想要类似的东西

$content= unpack("s", $data);   //where s can denote to string

谢谢。

【问题讨论】:

  • 那么,.dat 文件中存储了什么?如果你不知道,我们不知道。如果只是文本开头,则根本不需要做任何事情。
  • 您可以尝试使用 fileinfo 来识别文件类型,但如果这不起作用,您就是 SOL。如果您不知道要从什么转换,就无法转换。 PHP 并不神奇。
  • 哦,我的意思是我知道该文件包含二进制数据@deceze 和 GordonM,如果你得到不同的结果,对不起。我希望将文件数据完全转换为人类可读的文本。

标签: php file binary


【解决方案1】:

PHP 没有“二进制”类型。二进制数据存储在字符串中。如果您从文件中读取二进制数据,它已经存储为字符串。您不需要将其转换为字符串。

如果二进制数据已经以某种标准编码表示文本,则您无需执行任何操作,因为您已经有了一个有效的字符串。如果二进制数据代表某种编码,你需要知道你需要用它做什么,我们不知道。

【讨论】:

  • 我自己似乎不清楚这个问题。但是文件是.Dat,它有二进制数据,不是人类可读的。我的 php 程序使用 $handle = fopen("filename","rb"); 打开文件流.现在,如果我读取文件,我会以字符串形式获取文件内容,但请记住,该字符串是人类不可读的简单文本,它只是编码数据,看起来像“@#”和一些乱码。我希望将其保存为人类可读的文本,其中该乱码字符例如表示文本“America”而不是“@#”。
  • 那你需要知道它是什么类型的编码。只是“二进制 .dat”没有任何意义。计算机中的一切都是二进制的。如果您不知道二进制格式代表什么以及如何从中获取可读文本,我们也不知道。
  • 是的,它的 ASCII 编码,我接受计算机中的一切都是二进制的事情@deceze,只是对这个问题感到困惑。
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
相关资源
最近更新 更多