# Getting bit on bytes

hey there all, i have a question concerning making numbers from bytes
and back agian

if i have some numbers:
lo byte = 192
hi byte = 176
i can get the number 12480 like this:
(176 & 127) * 256 + 192 = 12480

but if i start with the 12480, how do i get the two bytes (lo and hi)
that make it up?

i kinda know what i am doing here, but keep getting tripped up

thanks

On Sat, Jul 07, 2007 at 02:37:09AM +0900, shawn bright wrote:

hey there all, i have a question concerning making numbers from bytes
and back agian

if i have some numbers:
lo byte = 192
hi byte = 176
i can get the number 12480 like this:
(176 & 127) * 256 + 192 = 12480

It’s usually written (176 << 8) + 192, and I don’t know why you want to
zero out the high bit if you claim that the high byte is the high byte.

but if i start with the 12480, how do i get the two bytes (lo and hi)
that make it up?

hi = 255 & (12480 >> 8)
lo = 255 & 12480

i kinda know what i am doing here, but keep getting tripped up
thanks
–Greg

well, it’s very strange to me too.

you see, we are reading info from sensors through a serial port, as
the message comes in, i collect all the bytes into an array msg_list
the id number of the sensor, i get like this.
sensor = (msg_list[1] & 127) * 256 + msg_list[0]

so, now my challenge is to write commands back to the sensor so i need
to take the sensor number that we have in the database and create the
bytes out of it to write to the port.

i don’t know exactly why the first byte is masked in the msb. I just
did it because their docs told me to.

thanks