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