2010-04-23 159 views
3

當我向二進制文件寫入數字時,它不會顯示。但是在一個角色的情況下,它確實如此。爲什麼?你將如何檢查包含字符的文件是否是二進制文件?檢查文件數據是否爲二進制文件

+0

您如何查看數據以確定其顯示方式? – 2010-04-23 00:49:27

+0

用於檢測文件是ASCII文本還是二進制文件(至少具有某種程度的置信度),請參閱此問題:http://stackoverflow.com/questions/277521/how-to-identify-the-file-content-is -in-ascii-or-binary#277538 – 2010-04-23 00:49:56

+0

@Michael我正在使用記事本來查看它。 – Gates127 2010-04-23 00:51:44

回答

4

它與你如何解釋文件中的內容有關。文件中的所有內容都是二進制的,字符是整數等。

當您在文件(或CAT或任何操作系統具有)的控制檯上執行TYPE時,文件的內容默認會被解釋爲文本,因爲程序員類型的決定寫它那樣。

當您編寫程序讀取文件中的數據時,由您決定如何解讀數據。

這就是爲什麼你只能猜測文件內容,這就是爲什麼經常使用文件擴展名來提示內容應該如何解釋的提示。

+0

所以我看到了ASCII字符,因爲它們被記事本解釋爲字符(每個1 BYTE)。如果是整數(int),則其長度爲4 BYTE。 – Gates127 2010-04-23 01:01:53

+0

@ Gates127 - 如果您想將整數作爲文本讀取,您可能不希望將整數寫入文件 - 您希望將該整數的文本表示寫入文件。這是(使用你的數字),而不是寫入值12,345,678(4字節),你想寫「12345678」(8字節)。 – Damovisa 2010-04-23 01:05:30

+0

我想我明白了,一個整數被保存爲4個字節,它可能不存在於ASCII表中,所以記事本無法解釋它。而ASCII字符的範圍是從0到255. – Gates127 2010-04-23 01:15:11

1

我想你真正要問的是你(個人)是否可以解釋文件中的內容。

正如安德斯所提到的那樣,通常可以將文件讀取爲文本,而不管其內容是什麼 - 然而,這些字符可能沒有意義。

假設你正在編寫軟件來執行這項任務,或許下面(高級別)算法將幫助:

  1. 創建你找到文本
  2. 讀取文件可接受的字符的列表,將其解釋爲ASCII
  3. 如果文件中的任何字符不在列表中,則失敗。
  4. 對要處理的任何文本編碼(ASCII,UTF-x等)重複步驟2和3
  5. 如果沒有任何內容通過,則不是文本。

這有幫助嗎?

1

好的,我相信我可以回答你的問題。數字在記事本中顯示爲垃圾的原因是因爲您保存了一個整數值 - 保存ascii代碼爲0-9,其中包含時髦的字符與它們相關聯。保存一個字符時,它會保存該字符的實際ASCII值(它將字符視爲一個轉換爲其ASCII值的數字),然後該字符將顯示爲您希望看到的字符。

另一種方式把它是:

int(1) = 1 

int('A') = 65 

如何看它們之間的區別到編譯器?

相關問題