PRJ - Swap Bits Lf#
2024-05-29
/* 一个字节内的比特左右蝶式交换
Reference
码表: https://www.cnblogs.com/prosim/articles/17447891.html
蝶式计算方法: https://blog.csdn.net/karaxiaoyu/article/details/79839894
https://blog.csdn.net/masibuaa/article/details/8188201
https://blog.csdn.net/karaxiaoyu/article/details/79839894
*/
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
byte data_table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d,
0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e,
0x79, 0x71 };
for (int i = 0; i < 16; i++) {
byte data = data_table[i];
byte out = swap_bits_lf(data);
Serial.print(data, HEX);
Serial.print(" -- > ");
Serial.print(out, HEX);
Serial.print('\n');
}
}
void loop() {
// put your main code here, to run repeatedly:
}
byte swap_bits_lf(byte data) {
data = (data << 4) | (data >> 4);
data = ((data << 2) & 0xcc) | ((data >> 2) & 0x33);
data = ((data << 1) & 0xaa) | ((data >> 1) & 0x55);
return data;
}