2014-08-28 72 views
0

我希望能夠統計包含十六進制代碼的變量中出現「00」的次數。分割變量來計算雙字符組的數量

這是計算NULL的量字節包含在此代碼內,所以我要計數各2位數字爲1

48657920697420776f726b73000000000000000000000000000000000000 

使用例如十六進制代碼設置爲變量,我試圖分裂它變成一個列表,如

['48' '65' '79' etc]

,然後計數,但不能讓它的工作

+0

*「無法讓它工作」* - 所以哪裏代碼,以及它究竟有什麼問題? – jonrsharpe 2014-08-28 11:19:42

回答

2

假設你可能有非常長字符串,而從二進制文件計數NUL字節,一個迭代器基於方法可能是首選:

>>> s="48657920697420776f726b73000000000000000000000000000000000000" 
>>> sum(1 if x == ('0','0') else 0 for x in zip(*[iter(s)]*2)) 
18 
+0

謝謝。兩個答案都能很好地工作並給出相同的結果,但已經使用了這個 – MPythonLearner 2014-08-28 12:09:08

1

與嘗試:

line = '48657920697420776f726b73000000000000000000000000000000000000' 
n = 2 
list = [line[i:i+n] for i in range(0, len(line), n)] 
list.count('00') 

你可以看到一個工作樣本here

希望這有助於

+0

謝謝偉大的工作,我有一些非常接近這一點,只是不太那裏 – MPythonLearner 2014-08-28 12:09:42

+0

我也開始學習Python,所以有時我被困在這樣的事情。我很樂意幫助你:)。 – albciff 2014-08-28 12:21:51