[Tutor] [spoiler] Re: Shifting arrays as though they are a 'word'
steve at pearwood.info
Mon Oct 8 20:04:35 EDT 2018
On Mon, Oct 08, 2018 at 09:16:16AM -0400, Chip Wachob wrote:
> - What follows is a mini version, the array could be any size up to 64 bytes
> input: 10010010 . 11101111 . 01010011
> shift 'x' (for example, I'll use 1)
> output: 01001001 . 01110111 . 10101001
The first two seem to be simple right bit-shift:
10010010 -> 01001001
11101111 -> 01110111
but the third seems to be something completely different, neither a left
nor a right shift:
01010011 -> 10101001
A left-bit shift would give this: 10100110
and a right shift would give this: 00101001
So now I don't know what you want.
> The above are not actual data that have been manipulated by the
> software but illustrations of observations. The real data is 'random'
> so I'm doing the best to recall from memory what happens.
Seriously, "this is what I vaguely remember happening" is no way to
debug software. Show us *actual data* with *actual results* and maybe we
can help, otherwise we're just pissing into the wind here.
> Ideally, I'd love to be able to say :
> # here's the array / list
> rx_data = 
> # read through all the bytes
> # stash the results into the list
> for x in range (bytes_of_data):
> rx_data[x] = read_data()
> # bit shift the entire lot
> rx_data = rx_data >> bits_to_shift.
> Which would provide me with the output described above.
Take your byte-array returned from read_data, the *lot* of it, not just
the first byte. Convert to an int, and shift the int.
py> b = bytearray(4) # work with four bytes
py> b = 255 # fill in some non-zero values
py> b = 127
py> n = int.from_bytes(b, 'big')
py> bin(n >> 1)
py> bin(n << 1)
Does that help?
More information about the Tutor