Thanks for your help, Luke. i am trying to get a grasp on how all this works, which is the msb, lsb, etc..
if i use i bitmask of 240 it will mask the most significant 4 bits so that only the most significant 4 bits remain.. like 53 & 240 = 48 ( because only the 32 and 16 are set) and if i use 15 it should mask the least significant bits, right ? now if i am using the first half of the 2nd byte, and making the first byte the most significant. i would shift the first byte to the Left by 4 byte1 << 4 then add ( byte2 & 240 ) so for the next number that i want that will consist of the 2nd half of the 2nd byte as the most significant , i would take the second byte with my bitmask then shift it right by 4 then add the third byte to that .... am i getting this right like x = ((byte2 & 240) << 4) + byte 3 i think ? shawn On 2/23/07, Luke Paireepinart <[EMAIL PROTECTED]> wrote: > shawn bright wrote: > > ok, i am good with what you have explained here, > > now i am on a similar problem. > > > > the data i need is in a condensed format. in other words, they are > > sending 2 values in three bytes. > > > > so if i have 3 values say a = 53, b = 13, and c = 31 > > > > so value 1 is the first byte ( a ) and the first 4 bits of the second > > byte (b) > > value 2 is the last 4 bits of byte (b) and byte (c) > Please try not to interchange your terms, it makes your questions confusing. > 'so if i have 3 values say a = 53, b = 13, and c = 31' > Should be 'so if I have 3 bytes' > because immediately after, you talk about your extracted data as 'values.' > It's not too big of a deal, but it was confusing at first. > > > > so i believe i do shifting here. as in i do a > > (a << 4) * 32 + b > You need to read an article on bit manipulation. > I'll give you a summary of what you're trying to do. > given the byte > x = 1 1 0 0 0 1 1 0 > If you want to extract just the four most significant bits, [1 1 0 0], > you shift the number TO THE RIGHT by 4. > x >> 4 > will result in 4 shifts like so: > 1 1 0 0 0 1 1 0 -> 1 1 0 0 0 1 1 > 1 1 0 0 0 1 1 -> 1 1 0 0 0 1 > 1 1 0 0 0 1 -> 1 1 0 0 0 > 1 1 0 0 0 -> 1 1 0 0 > Which results in the number 0x0C or 12. > Now, since these are the MSB, you could shift back 4 places > x << 4 > 1 1 0 0 -> 1 1 0 0 0 > 1 1 0 0 0 -> 1 1 0 0 0 0 > 1 1 0 0 0 0 -> 1 1 0 0 0 0 0 > 1 1 0 0 0 0 0 -> 1 1 0 0 0 0 0 0 > > but I don't know if you want to do that or not. > and if you wanted to do that, you could just use a bitmask from the > beginning. see the next part. > > Now as for the least significant bits: > recall that > > 1 1 0 0 0 1 0 0 & 0 0 0 0 1 1 1 1 > will yeild > 0 0 0 0 + whatever the last 4 bits are in the first item. > > Hope that helps. > It's better if you take the time to really understand what is happening > in all these cases, so you won't have to experiment with trial and error. > -Luke > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor