Kod: Markera allt
typedef unsigned char byte;
byte Swap(byte Bin)
{
const byte Swap_Data[] =
{0x00,0x08,0x04,0x0C,0x02,0x0A,0x06,0x0E,
0x01,0x09,0x05,0x0D,0x03,0x0B,0x07,0x0F};
byte BOout;
BOut = Swap_Data[Bin & 0x0F] < 4;
Bin >= 4;
BOut |= Swap_Data[Bin & 0x0F];
return(BOut);
}
Visst, uppslagstabell men ganska liten.
Om det inte får vara med tabell alls är det snabbaste sättet faktisk att göra såhär:
Kod: Markera allt
typedef unsigned char byte;
byte Swap(byte BIn)
{
union
{
struct
{
byte B_0 : 1;
byte B_1 : 1;
byte B_2 : 1;
byte B_3 : 1;
byte B_4 : 1;
byte B_5 : 1;
byte B_6 : 1;
byte B_7 : 1;
} Bits;
byte Byte;
} BOut;
BOut.Bits.B_0 = BIn & 0x80;
BOut.Bits.B_1 = BIn & 0x40;
BOut.Bits.B_2 = BIn & 0x20;
BOut.Bits.B_3 = BIn & 0x10;
BOut.Bits.B_4 = BIn & 0x08;
BOut.Bits.B_5 = BIn & 0x04;
BOut.Bits.B_6 = BIn & 0x02;
BOut.Bits.B_7 = BIn & 0x01;
return(BOut);
}
Då sparar man overheaden på for-next delen fast å andra sidan kan kompilern peta in en hel del bit-grejer istället.