[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