November 20, 2009

Fun with C pointers

For converting a binary value into hexadecimal string, one nibble at a time:

hexChar = *("0123456789ABCDEF" + ((bit4 << 3) | (bit3 << 2) | (bit2 << 1) | bit1));

hexChar = "0123456789ABCDEF"[bit4*8+bit3*4+bit2*2+bit1];

hexChar = (bit4*8+bit3*4+bit2*2+bit1)["0123456789ABCDEF"];


That last one hurt my brain. I vaguely knew that pointers/arrays could be used like that, but I've never seen anyone actually do it.

No comments:

Post a Comment