getting bit on bytes

Discussion in 'Ruby' started by shawn bright, Jul 6, 2007.

  1. shawn bright

    shawn bright Guest

    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

    shawn bright, Jul 6, 2007
    1. Advertisements

  2. 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.
    hi = 255 & (12480 >> 8)
    lo = 255 & 12480
    Gregory Seidman, Jul 6, 2007
    1. Advertisements

  3. shawn bright

    shawn bright Guest

    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.

    shawn bright, Jul 6, 2007
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.