在arduino下为了在像素屏中点亮灯珠,有些字符汉字和图像先生成了16进制的字符,然后又需要把16进制转成2进制来控制灯珠。
之前从网上找到了一个16进制转2进制的方法如下:
int *getBin(int Dec)
{
// Dec=128;
static int a[8];
for (int i = 7; i >= 0; i--)
{
if (pow(2, i) <= Dec)
{
Dec = Dec - pow(2, i);
a[7 - i] = 1;
}
else
{
a[7 - i] = 0;
}
}
return a;
};
测试后运行正常,最近又学习了一下位运算,所以下面的方法也是可以实现同样的功能:
int *getBin2(uint8_t data){
static int a[8];
for(int i=0;i<8;i++)
{
if(data & 0x01)a[i]=1;//1
else a[i]=0;//0
data >>= 1;
}
return a;
}
上面这段代码从其实更简洁,注意下面这段代码可能二进制是反序的。
如果理解了位运算符,下面这段用起来更好。
其实这里基本不用区分是16进制还是10进制,甚至8进制,都可以用上面的函数转成2进制。