在php中读取二进制文件并将其转换为字符串

在php中读取二进制文件并将其转换为字符串,php,file,binary,Php,File,Binary,我为此花了将近一天的时间,但没有成功 我想做的是,我有一个二进制文件“data.dat” 我想读取文件内容,并将其以文本格式输出,比如php中的“data.txt” 我尝试了php的解包函数,但要求将类型作为第一个参数(可能是我错了,php新手) 但是如果我不知道我正在读取的文件中存储的是什么位置、什么类型的数据呢 由于类型的原因,此函数正在限制我 我想要类似的东西 $content= unpack("s", $data); //where s can denote to string 谢

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

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

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

我尝试了php的解包函数,但要求将类型作为第一个参数(可能是我错了,php新手)

但是如果我不知道我正在读取的文件中存储的是什么位置、什么类型的数据呢

由于类型的原因,此函数正在限制我

我想要类似的东西

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

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

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

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


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

那么,.dat文件中存储了什么?如果你不知道,我们也不知道。如果一开始只是文本,你根本不需要做任何事情。你可以尝试使用fileinfo来识别文件类型,但如果这不起作用,你就是SOL。如果你不知道转换的是什么,你就不能转换。PHP不是魔术。哦,我的意思是我知道该文件包含二进制数据@deceze和GordonM,如果您得到的不同,很抱歉。我希望将该文件数据完全转换为人类可读的文本。那么,.dat文件中存储了什么?如果你不知道,我们也不知道。如果一开始只是文本,你根本不需要做任何事情。你可以尝试使用fileinfo来识别文件类型,但如果这不起作用,你就是SOL。如果你不知道转换的是什么,你就不能转换。PHP不是魔术。哦,我的意思是我知道该文件包含二进制数据@deceze和GordonM,如果您得到的不同,很抱歉。我希望将文件数据完全转换为人类可读的文本。我自己似乎不清楚这个问题。但是文件是.Dat,它有二进制数据,这不是人类可读的。我的php程序使用$handle=fopen(“filename”,“rb”);打开文件流。现在如果我读文件,我会得到字符串中的文件内容,但是记住这个字符串是一个简单的文本,不是人类可读的,它只是编码的数据,看起来像“@#”和一些乱码。我想将其保存为人类可读的文本,例如,这个乱码字符表示文本“America”,而不是“@#”。只是“binary.dat”没有任何意义。计算机中的一切都是二进制的。如果你不知道二进制格式代表什么以及如何从中获取可读文本,我们也不知道。是的,它是ASCII编码,我接受计算机@deceze中的所有东西都是二进制的,只是对这个问题感到困惑。我自己似乎不清楚这个问题。但是文件是.Dat,它有二进制数据,这不是人类可读的。我的php程序使用$handle=fopen(“filename”,“rb”);打开文件流。现在如果我读文件,我会得到字符串中的文件内容,但是记住这个字符串是一个简单的文本,不是人类可读的,它只是编码的数据,看起来像“@#”和一些乱码。我想将其保存为人类可读的文本,例如,这个乱码字符表示文本“America”,而不是“@#”。只是“binary.dat”没有任何意义。计算机中的一切都是二进制的。如果你不知道二进制格式代表什么,以及如何从中获取可读文本,我们也不知道。是的,它的ASCII编码,我接受在computer@deceze中所有东西都是二进制的,只是对这个问题感到困惑。
$content= unpack("s", $data);   //where s can denote to string