2014-08-28 74 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