Paul Rubin wrote:
> Robin Becker <[EMAIL PROTECTED]> writes:
>>> type(nx.array([1,2,3],dtype=nx.uint32)[0])
>>> <type 'numpy.uint32'>
>> great, but do we have a pure python version?
> 
> array.array('L', [1,2,3])
yes that works if @L is unsigned 32 bit. I guess >L is always 4 bytes. Part of 
my confusion comes from not realizing all the different 64 bit models. In 
python 
I can get away with the following

        def add32(x, y):
                "Calculate (x + y) modulo 2**32"
                return ((x&0xFFFFFFFFL)+(y&0xFFFFFFFFL)) & 0xffffffffL

        def calcChecksum(data):
                """Calculates TTF-style checksums"""
                if len(data)&3: data = data + (4-(len(data)&3))*"\0"
                sum = 0
                for n in unpack(">%dl" % (len(data)>>2), data):
                        sum = add32(sum,n)
                return sum

but my tests sometimes look a bit odd.

eg
        self.assertEquals(add32(10, -6), 4)
        self.assertEquals(add32(6, -10), -4&0xFFFFFFFFL)
        self.assertEquals(add32(0x80000000L, -1), 0x7FFFFFFF)
        self.assertEquals(add32(0x7FFFFFFF, 1), 0x80000000L)

-- 
Robin Becker

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to