arduino 下16进制转2进制

在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进制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值