Need elegant way to cast four bytes into a long

Terry Reedy tjreedy at udel.edu
Fri Aug 8 11:49:01 EDT 2003


"William S. Huizinga" <wiiliam.huizinga at smiths-aerospace.com> wrote in
message news:3f33c209$1 at news.si.com...
> I've got an array.array of unsigned char and would like to make a
slice
> of that array (e.g. a[0:4]) become one long like I would in "C" :
>
> l = ((unsigned long *) (&a[0]))[0];
>
> I have been getting what I want in this sort of manner :
>
> l  = 0L
> l  = a[0]
> l += a[1] <<  8
> l += a[2] << 16
> l += a[3] << 24
>
> but I think that's too wordy.  Is there a more intrinsic and elegant
way
> to do this?

el = 0L+ a[0] + (a[1]<< 8)  + (a[2]<<16) + (a[3] << 24)

is more compact and must be slightly faster (but parens are needed)

TJR







More information about the Python-list mailing list