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()[0] > > # 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[1] = 255 # fill in some non-zero values py> b[2] = 127 py> b bytearray(b'\x00\xff\x7f\x00') py> n = int.from_bytes(b, 'big') py> hex(n) '0xff7f00' py> bin(n >> 1) '0b11111111011111110000000' py> bin(n << 1) '0b1111111101111111000000000' Does that help? -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor