[Nym3-commit] r265 - trunk/nym3
laurent at conuropsis.org
laurent at conuropsis.org
Fri May 20 23:14:10 CEST 2005
Author: laurent
Date: 2005-05-20 23:14:09 +0200 (Fri, 20 May 2005)
New Revision: 265
Modified:
trunk/nym3/Mail.py
Log:
Fix bitfield generation and parsing.
Modified: trunk/nym3/Mail.py
===================================================================
--- trunk/nym3/Mail.py 2005-05-20 18:48:29 UTC (rev 264)
+++ trunk/nym3/Mail.py 2005-05-20 21:14:09 UTC (rev 265)
@@ -118,13 +118,20 @@
def bf(l):
- """take a list of index and generate a bitfield the k-bit is set to 1 if k
- is in l the bitfield is a 2 octets big endian string"""
- t=[0,0]
- for k in [x for x in l if x<16 and x >=0]:
- (q,r)=divmod(k,8)
- t[q] = t[q] | (1 << r)
- return chr(t[0])+chr(t[1])
+ """Generate 2 octets bitfield from boolean list (hasmail values). LSB
+ corresponds to first value in list"""
+ assert len(l) <= 16
+ r1 = 0
+ offset = 0
+ for i in l[:8]:
+ if i: r1 |= (1 << offset)
+ offset += 1
+ r2 = 0
+ offset = 0
+ for i in l[8:]:
+ if i: r2 |= (1 << offset)
+ offset += 1
+ return chr(r2) + chr(r1)
def bf2list(bf):
"""take a 2 octets big endian string and output the associated
@@ -134,7 +141,7 @@
for i in range(2):
for j in range(8):
if ord(bf[i]) & (1 << j):
- l.append(i * 8 + j)
+ l.append((1 - i) * 8 + j)
return l
def b2s(c):
More information about the Nym3-commit
mailing list