View Single Post
  #2   Spotlight this post!  
Unread 10-02-2011, 21:21
mikets's Avatar
mikets mikets is offline
Software Engineer
FRC #0492 (Titan Robotics)
Team Role: Mentor
 
Join Date: Jan 2010
Rookie Year: 2008
Location: Bellevue, WA
Posts: 671
mikets is a glorious beacon of lightmikets is a glorious beacon of lightmikets is a glorious beacon of lightmikets is a glorious beacon of lightmikets is a glorious beacon of lightmikets is a glorious beacon of light
Re: Better bitwise conversion

Quote:
Originally Posted by dbeckwith View Post
Well one way you could do it is with a for loop, but that would only really be efficient if the bit masks are consecutive. I only know Java, so I might get the C++ syntax wrong, but here is what it might look like:
Code:
int keys = keysHeld();
byte packedKeys = 0;
 
for (int i = 0; i < 8; i++) {
  if (keys & (1 << i)) packedKeys |= 1 << i;
}
That would pack the values of the keys, but only if the bit masks were all in a line. You could also start the i variable at the first mask if it isn't zero. I have the same question as mikets though. Why do you even need to do this if keysHeld() already returns the key values? It seems redundant to me.
But this for-loop is copying the exact same bit pattern from keys to packedKeys. So what's the difference between that and this?
Code:
packedKeys = keys;
__________________
Reply With Quote