004
01.05.2006, 05:58 Uhr
Helmut
|
Also eine 8 Bit-Variante deines Makro reicht mir völlig aus. Spart einem Zeit, wenn man mit Bits setzen usw. zu tun hat. Was neu ist, man braucht jetzt keine führende Null mehr. 8 Ziffern pro Byte sind jedoch zwingend erforderlich.
C++: |
#define bin8(bi) bi <= 01111111 ?\ ((bi%8?1:0)\ +(bi/8%8?2:0)\ +(bi/64%8?4:0)\ +(bi/512%8?8:0)\ +(bi/4096%8?16:0)\ +(bi/32768%8?32:0)\ +(bi/262144%8?64:0))\ :((bi%10?1:0)\ +(bi/10%10?2:0)\ +(bi/100%10?4:0)\ +(bi/1000%10?8:0)\ +(bi/10000%10?16:0)\ +(bi/100000%10?32:0)\ +(bi/1000000%10?64:0)\ +(bi/10000000%10?128:0))
#define bin16(a, b) (((bin8( a )) << 8) | (bin8( b )))
#define bin32(a, b, c, d) (((bin8( a )) << 24) | ((bin8( b )) << 16) |\ ((bin8( c )) << 8) | (bin8( d )))
//z.B. char c ^= bin8(00111100); // short d &= bin16(10111100,00111100); // int e |= bin32(10111100,10111100,10111100,10111100);
|
MfG Helmut |