4 byte integer

P

Paul D Ainsworth

Greetings everyone. I'm a relative newcomer to python and I have a technical
problem.

I want to split a 32 bit / 4 byte unsigned integer into 4 separate byte
variables according to the following logic: -

bit numbers 0..7 byte 1
bit numbers 8..15 byte 2
bit numbers 16..23 byte 3
bit numbers 24..31 byte 4

Each of these byte variables to contain integer data from 0 to 255 (or 0 to
FF in hex mode)

I had thought that struct.unpack with an input message format of 'I' would
be the way to do it, but its reporting an error that it doesn't want to
accept an integer.

Please can anyone advise?
 
M

Michael Bentley

Greetings everyone. I'm a relative newcomer to python and I have a
technical
problem.

I want to split a 32 bit / 4 byte unsigned integer into 4 separate
byte
variables according to the following logic: -

bit numbers 0..7 byte 1
bit numbers 8..15 byte 2
bit numbers 16..23 byte 3
bit numbers 24..31 byte 4

Each of these byte variables to contain integer data from 0 to 255
(or 0 to
FF in hex mode)

I had thought that struct.unpack with an input message format of
'I' would
be the way to do it, but its reporting an error that it doesn't
want to
accept an integer.

Please can anyone advise?

Have a look at http://aspn.activestate.com/ASPN/Cookbook/Python/
Recipe/113799
 
J

James T. Dennis

Paul D Ainsworth said:
Greetings everyone. I'm a relative newcomer to python and I have a technical
problem.
I want to split a 32 bit / 4 byte unsigned integer into 4 separate byte
variables according to the following logic: -
bit numbers 0..7 byte 1
bit numbers 8..15 byte 2
bit numbers 16..23 byte 3
bit numbers 24..31 byte 4
Each of these byte variables to contain integer data from 0 to 255 (or 0 to
FF in hex mode)
I had thought that struct.unpack with an input message format of 'I' would
be the way to do it, but its reporting an error that it doesn't want to
accept an integer.
Please can anyone advise?

Would something like this work?

def word2bytes(n):
"""Given an positive integer n, return a tuple of 4 bytes from
n's least significant 32-bits
"""
r = []
n &= 0xFFFFFFFFL
for i in range(4):
r.append(n & 0xFF)
n >>= 8
r.reverse()
return tuple(r)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
SterlingLa
Top