2012-06-24 124 views
0

我花了近一天的時間,但沒有得到成功。在php中讀取二進制文件並將其轉換爲字符串

我想要做的是,我有一個二進制文件「data.dat文件」

我想在PHP讀取文本格式的文件內容,並將其輸出發言權「的data.txt」。

我試過解壓php的函數,但需要提及的類型作爲第一個參數(可能是我錯了,新的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 

感謝的東西。

+0

那麼,什麼是存儲在.dat文件?如果你不知道,我們不知道。如果這只是文本開頭,你根本不需要做任何事情。 – deceze

+1

你可以嘗試使用fileinfo來識別文件類型,但如果這不起作用,你就是SOL。如果你不知道你要從中轉換什麼,你不能轉換。 PHP並不神奇。 – GordonM

+0

哦,我的意思是我知道該文件包含二進制數據@deceze和GordonM,對不起,如果你得到它不同。我希望將文件數據完整轉換爲可讀的文本。 –

回答

3

PHP沒有「二進制」類型。二進制數據存儲在字符串中。如果您從文件讀取二進制數據,它已經存儲爲一個字符串。您不需要將其轉換爲字符串。

如果二進制數據已經代表某些標準編碼中的文本,那麼您不需要執行任何操作,因爲您已經有了一個有效的字符串。如果二進制數據表示某種編碼,則需要知道您需要做什麼,我們不知道。

+0

似乎我自己不清楚這個問題。但該文件是.Dat,它具有二進制數據,這是不可讀的。我的php程序用$ handle = fopen(「filename」,「rb」)打開文件流; 。現在,如果我閱讀文件,我得到了字符串中的文件內容,但是請記住,這個字符串是一個簡單的文本,它不是人類可讀的,它只是編碼的數據,看起來像'@#'和一些亂碼文字。我希望這可以作爲人類可讀的文本保存,其中那些亂碼字符例如意味着文本「美國」而不是「@#」。 –

+0

然後你需要知道它是什麼類型的編碼。只是「二進制.dat」並不意味着什麼。在電腦中一切都是二元的。如果您不知道二進制格式代表什麼以及如何從中獲取可讀文本,我們也不知道。 – deceze

+0

是的,它的ASCII編碼,我接受的東西,一切都是二進制的電腦@deceze,只是與這個問題混淆。 –

相關問題