判斷字串是文字還是二進位制

2022-07-25 03:06:54 字數 6023 閱讀 8353

1樓:匿名使用者

、空字串按照文字格式處理

2、如果字串含有空字元(『\0』),則認為是二進位制格式

3、超過30%的字串高位時1(ascii大於126)或其它奇怪字元,則認為是二進位制格式

輔助:文字的合法字元為ascii碼從32到126的字元,加上'\n','\r','\t','\b'

另外,自測時候,可以用chr(ascii碼)內建函式來模擬一個二進位制字元

from __future__ import division

import string

from string import maketrans

class demo:

def istext(self,s):

if not s:

return true

all_count  = len(s)

text_count = 0

#print 'the length of %s is %d' % (s,all_count)

for i in range(0,all_count):

value = ord(s[i])

if(0==value):

return false

#print "%s convert it's ascii is %d" % (s[i],value)

if(value>=32 and value<=126) or (value==8 or value==9 or value==10 or value==13):

text_count+=1

#print '%d -----> %d'%(value,text_count)

percent = text_count/all_count

#print 'the text percert is %d',percent

if(percent>=0.7):

return true

else:

return false

def createstr(self,start,end):

s = ''

for i in range(start,end+1):

s+=chr(i)

#print s

return s

a = demo()

print "\"\" is a text ? ==> ",a.istext("")

print "abcdefg is a text ? ==> ",a.istext("abcdefg")

print "abcdefg\0 is a text ? ==> ",a.istext("abcdegf\0")

print "special is a text ? ==> ",a.istext("\n\n\0\n\n\0\n\n\n\0")

print "special is a text ? ==> ",a.istext("\r\n\t\b")

pstr = a.createstr(12,30)

print "createstr(12,30) is a text ? ==> ",a.istext(pstr)

pstr = a.createstr(25,45)

print "createstr(25,45) is a text ? ==> ",a.istext(pstr)

2樓:我超想吃大螃蟹

如果只是簡單的複製、擷取等操作,直接使用位元組流對檔案進行i/o操作就可以了;

一般判斷一個檔案是否是二進位制檔案,只是判斷一下檔案的內容中是否含有0x00-0x07這八個字元內容,如果有的話,就是二進位制檔案。

二進位制檔案與文字檔案的區別

3樓:匿名使用者

在定義和存取方式上二進位制檔案

與文字檔案存在區別。

1、定義上的區別

文字檔案:文字檔案是一種計算機檔案,它是一種典型的順序檔案,其檔案的邏輯結構又屬於流式檔案。簡單的說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編碼等等。

二進位制檔案:是基於值編碼的檔案,你可以根據具體應用,指定某個值是什麼意思(這樣一個過程,可以看作是自定義編碼)。使用者一般不能直接讀懂它們,只有通過相應的軟體才能將其顯示出來。

二進位制檔案一般是可執行程式、圖形、影象、聲音等等。

從上面可以看出文字檔案與二進位制檔案的區別並不是物理上的,而是邏輯上的。這兩者只是在編碼層次上有差異,文字檔案基本上是定長編碼的(也有非定長的編碼如utf-8)。而二進位制檔案則可看成是變長編碼,因為是值編碼,多少個位元代表一個值,完全由你決定。

2、儲存方式上的區別

文字工具開啟一個檔案,首先讀取檔案物理上所對應的二進位制位元流,然後按照所選擇的解碼方式來解釋這個流,然後將解釋結果顯示出來。

一般來說,你選取的解碼方式會是ascii碼形式(ascii碼的一個字元是8個位元),接下來,它8個位元8個位元地來解釋這個檔案流。

記事本無論開啟什麼檔案都按既定的字元編碼工作(如ascii碼),所以當他開啟二進位制檔案時,出現亂碼也是很必然的一件事情了,解碼和譯碼不對應。

文字檔案的儲存與其讀取基本上是個逆過程。而二進位制檔案的存取與文字檔案的存取差不多,只是編/解碼方式不同而已。

二進位制檔案就是把記憶體中的資料按其在記憶體中儲存的形式原樣輸出到磁碟中存放,即存放的是資料的原形式。文字檔案是把資料的終端形式的二進位制資料輸出到磁碟上存放,即存放的是資料的終端形式

擴充套件資料

文字檔案和二進位制檔案的優缺點:

一般認為,文字檔案編碼基於字元定長,譯碼容易些;二進位制檔案編碼是變長的,所以它靈活,儲存利用率要高些,譯碼難一些(不同的二進位制檔案格式,有不同的譯碼方式)。

關於空間利用率,想想看,二進位制檔案甚至可以用一個位元來代表一個意思(位操作),而文字檔案任何一個意思至少是一個字元.

在windows下,文字檔案不一定是以ascii來存貯的,因為ascii碼只能表示128的標識,你開啟一個txt文件,然後另存為,有個選項是編碼,可以選擇存貯格式,一般來說utf-8編碼格式相容性要好一些.而二進位制用的計算機原始語言,不存在相容性。

儲存方式的區別:

如果儲存的是字元資料,無論採用文字檔案還是二進位制檔案都是沒有任何區別的。

如果儲存的是非字元資料,又要看我們使用的情況來決定:

1、如果是需要頻繁的儲存和訪問資料,那麼應該採取二進位制檔案進行存放,這樣可以節省儲存空間和轉換時間。

2、如果需要頻繁的向終端顯示資料或從終端讀入資料,那麼應該採用文字檔案進行存放,這樣可以節省轉換時間。

4樓:就久九酒

二進位制檔案與文字檔案在定義和存取方式上存在區別。

1、定義

的區別文字檔案:文字檔案是一種計算機檔案,它是一種典型的順序檔案,其檔案的邏輯結構又屬於流式檔案。

二進位制檔案:是基於值編碼的檔案,你可以根據具體應用,指定某個值是什麼意思(這樣一個過程,可以看作是自定義編碼)。

從上面可以看出文字檔案基本上是定長編碼的(也有非定長的編碼如utf-8)。而二進位制檔案可看成是變長編碼的,因為是值編碼嘛,多少個位元代表一個值,完全由你決定。

2、儲存方式的區別

文字工具開啟一個檔案,首先讀取檔案物理上所對應的二進位制位元流,然後按照所選擇的解碼方式來解釋這個流,然後將解釋結果顯示出來。

一般來說,你選取的解碼方式會是ascii碼形式(ascii碼的一個字元是8個位元),接下來,它8個位元8個位元地來解釋這個檔案流。

記事本無論開啟什麼檔案都按既定的字元編碼工作(如ascii碼),所以當他開啟二進位制檔案時,出現亂碼也是很必然的一件事情了,解碼和譯碼不對應。

文字檔案的儲存與其讀取基本上是個逆過程。而二進位制檔案的存取與文字檔案的存取差不多,只是編/解碼方式不同而已。

擴充套件資料

文字檔案和二進位制檔案的優缺點:

一般認為,文字檔案編碼基於字元定長,譯碼容易些;二進位制檔案編碼是變長的,所以它靈活,儲存利用率要高些,譯碼難一些(不同的二進位制檔案格式,有不同的譯碼方式)。

關於空間利用率,想想看,二進位制檔案甚至可以用一個位元來代表一個意思(位操作),而文字檔案任何一個意思至少是一個字元.

在windows下,文字檔案不一定是以ascii來存貯的,因為ascii碼只能表示128的標識,你開啟一個txt文件,然後另存為,有個選項是編碼,可以選擇存貯格式,一般來說utf-8編碼格式相容性要好一些.而二進位制用的計算機原始語言,不存在相容性。

5樓:威海博銳化機

一、文字檔案和二進位制檔案定義的區別:

計算機在實體記憶體上面存放的都是二進位制,所以文字檔案和二進位制檔案的主要區別是在邏輯上的而不是物理上的。而從檔案的編碼方式來看,檔案可以分為文字檔案和二進位制檔案。

文字檔案是基於字元編碼的檔案,常見的有ascii、unicode等,二進位制檔案是基於值編碼的檔案,可以看成是變長編碼,你可以根據自己的需要,決定多少個位元代表一個值。

二、文字檔案和二進位制檔案儲存上的區別:

二進位制檔案就是把記憶體中的資料按其在記憶體中儲存的形式原樣輸出到磁碟中存放,即存放的是資料的原形式。

文字檔案是把資料的終端形式的二進位制資料輸出到磁碟上存放,即存放的是資料的終端形式。

在實際儲存中最好是將資料分成字元資料和非字元資料兩類:

如果儲存的是字元資料,無論採用文字檔案還是二進位制檔案都是沒有任何區別的,所以討論使用文字檔案還是二進位制檔案是沒有意義的。

如果儲存的是非字元資料,又要看我們使用的情況來決定:

1、如果是需要頻繁的儲存和訪問資料,那麼應該採取二進位制檔案進行存放,這樣可以節省儲存空間和轉換時間。

2、如果需要頻繁的向終端顯示資料或從終端讀入資料,那麼應該採用文字檔案進行存放,這樣可以節省轉換時間。

三、文字檔案的開啟方式和二進位制檔案開啟方式的區別:

1、文字模式中回車被當成一個字元'\n',在檔案中如果讀到0x1b,文字模式會認為這是檔案結束符,會按照一定方式對資料做相應的轉換。

2、二進位制模式中'\n'會被認為是兩個字元0x0d,0x0a;在讀到0x1b時,二進位制模式不會對檔案進行處理。

擴充套件資料:

文字檔案與二進位制檔案的優缺點:

因為文字檔案與二進位制檔案的區別僅僅是編碼上不同,所以他們的優缺點就是編碼的優缺點,這個找本編碼的書來看看就比較清楚了。

一般認為,文字檔案編碼基於字元定長,譯碼容易些;二進位制檔案編碼是變長的,所以它靈活,儲存利用率要高些,譯碼難一些(不同的二進位制檔案格式,有不同的譯碼方式)。

關於空間利用率,想想看,二進位制檔案甚至可以用一個位元來代表一個意思(位操作),而文字檔案任何一個意思至少是一個字元。

文字檔案:

文字檔案是一種計算機檔案,它是一種典型的順序檔案,其檔案的邏輯結構又屬於流式檔案。

特別的是,文字檔案是指以ascii碼方式(也稱文字方式)儲存的檔案,更確切地說,英文、數字等字元儲存的是ascii碼,而漢字儲存的是機內碼。文字檔案中除了儲存檔案有效字元資訊(包括能用ascii碼字元表示的回車、換行等資訊)外,不能儲存其他任何資訊。

文字檔案是一種由若干行字元構成的計算機檔案。文字檔案存在於計算機檔案系統中。通常,通過在文字檔案最後一行後放置檔案結束標誌來指明檔案的結束。

文字檔案是指一種容器,而純文字是指一種內容。

文字檔案可以包含純文字。一般來說,計算機檔案可以分為兩類:文字檔案和二進位制檔案。

由於結構簡單,文字檔案被廣泛用於記錄資訊。它能夠避免其它檔案格式遇到的一些問題。此外,當文字檔案中的部分資訊出現錯誤時,往往能夠比較容易的從錯誤中恢復出來,並繼續處理其餘的內容。

文字檔案的一個缺點是,它的熵往往較低,也就是說,可以用較小的儲存空間記錄這些資訊。

二進位制檔案:

為什麼要使用二進位制檔案。原因大概有三個:

第一是二進位制檔案比較節約空間,這兩者儲存字元型資料時並沒有差別。但是在儲存數字,特別是實型數字時,二進位制更節省空間;

第二個原因是,記憶體中參加計算的資料都是用二進位制無格式儲存起來的,因此,使用二進位制儲存到檔案就更快捷。如果儲存為文字檔案,則需要一個轉換的過程。在資料量很大的時候,兩者就會有明顯的速度差別了。

第三,就是一些比較精確的資料,使用二進位制儲存不會造成有效位的丟失。

labview十六進位制字串陣列轉二進位制字串陣列

條件bai結構不是真假2部分,du是對應8進位制數的8個分支。圖zhi中看到的是dao8進位制數內0,對應2進位制數000。其他容如8進位制數1,對應2進位制數001 2對應010 3對應011 4對應100,5對應101 6對應110 7對應111。2進位制數都是字串。程式前面把16進位制數轉變為...

二進位制和十六進位制怎麼轉換,什麼是二進位制 十六進位制有什麼區別,普通數怎麼轉化為二進位制和十六進位制

以二進位制數的小數點為界,整數部分從右至左每4位分開,最左邊不足4位時前面用0補齊 小數部分從左至右每4位分開,最右邊不足4位時後面用0補齊。然後按每4位對應的十六進位制符號寫出來,小數點位置不變就ok了。例如要將11010010110111.0011101化為十六進位制的步驟如下 以小數點為界左右...

如何判斷二進位制中有奇數個1還是偶數個

將x中的所有位逐位進行異或操作,如果有奇數個1,異或的結果將為1,如果有偶數個1,異或的結果將為0。bool oddones int x return cnt 1 先求x二進位制中1的個數,方法就是通過x x 1去掉最右端的1,直到x變為0,去掉了幾次1就是原x二進位制中含有多少個1 然後確定個數為...