例如:
char x=b'11001011';
char a,b;
转换后
a=b'11110000' 等于x的高四位的每一位变成两位
b=b'11001111' 等于x的低四位的每一位变成两位
转换过程用C语言应该怎么写效率更高?
4 个解决方案
#1
移位 &
效率,差不多
效率,差不多
#2
a=((x&0x0080)<<8)+((x&0x0080)<<7)+((x&0x0040)<<6)+((x&0x0040)<<5)+((x&0x0020)<<4)+((x&0x0020)<<3)+((x&0x0001)<<2)+(x&0x0001);写了2分钟,好费劲的,不知楼主满意不;
#3
@yangxf1217 算了,这个本来是用来放大打印机字体的,数据从单片机传送到打印头是SPI,本来想用单片机硬件SPI,这样的话要把字体放大一倍就得把一个字节放大为2个字节,一个字节转换为两个字节有点浪费时间了,我现在直接用软件模拟SPI了,这样的话发送一个BIT时钟脉冲两次就可以了,而且想把字体放大几倍就几倍,想放大几倍就时钟脉冲几次
#4
这个打印机里边原来是这个样子的,多谢赐教啦!
#1
移位 &
效率,差不多
效率,差不多
#2
a=((x&0x0080)<<8)+((x&0x0080)<<7)+((x&0x0040)<<6)+((x&0x0040)<<5)+((x&0x0020)<<4)+((x&0x0020)<<3)+((x&0x0001)<<2)+(x&0x0001);写了2分钟,好费劲的,不知楼主满意不;
#3
@yangxf1217 算了,这个本来是用来放大打印机字体的,数据从单片机传送到打印头是SPI,本来想用单片机硬件SPI,这样的话要把字体放大一倍就得把一个字节放大为2个字节,一个字节转换为两个字节有点浪费时间了,我现在直接用软件模拟SPI了,这样的话发送一个BIT时钟脉冲两次就可以了,而且想把字体放大几倍就几倍,想放大几倍就时钟脉冲几次
#4
这个打印机里边原来是这个样子的,多谢赐教啦!