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 On 7/6/07, Gregory Seidman <gsslist+ruby / anthropohedron.net> wrote: > 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 > > >