极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17865|回复: 4

C语言将10101这样的字符串转换成二进制格式?

[复制链接]
发表于 2017-7-27 15:34:52 | 显示全部楼层 |阅读模式
本帖最后由 Stormer 于 2017-7-27 23:41 编辑

在给ARDUINO写程序,现在遇到个问题。

有个字符串:

char strTemp[8];

它的内容是10101010.

现在想把这个字符串转换成二进制格式,保持10101010这个字面值不变,也就是变成B10101010。C语言里没有类型强制转换吧?

比如有个变量:

byte bResult;

把字符串10101010转换后赋值给它,使bResult的值为B10101010.

请问该怎么写?谢谢!

-----------------------------------------------------

想到解决方案了:遍历字符串,判断字符如果是1就当前位置1,然后向右位移1位继续下一个字符。最后就能得到一个byte类型跟字符串字面值一致的二进制值了。
回复

使用道具 举报

发表于 2017-7-27 21:04:31 | 显示全部楼层
本帖最后由 pz_cloud 于 2017-7-28 00:32 编辑

手动撸了个函数:
  1. template <class T>int array2int(T& arr)
  2. {
  3.         int sum = 0, n = sizeof(arr) / sizeof(arr[0]);
  4.         for (int i = 0; i < n; i++)
  5.                 sum += (arr[i] - '0') * pow(2, n - 1 - i);

  6.         return sum+1; //arduino编译器有奇怪的问题,这里需要+1
  7. }
复制代码


使用方法:
  1. char num[] = { '1','1','0','1' };
  2. int i = array2int(num);
复制代码
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-27 23:40:37 | 显示全部楼层
pz_cloud 发表于 2017-7-27 21:04
手动撸了个函数:

谢谢!大神辛苦啦
回复 支持 反对

使用道具 举报

发表于 2020-6-21 17:43:28 | 显示全部楼层
本帖最后由 gdgzwqz 于 2020-6-21 17:45 编辑

楼主解决了问题,把答案公布出来,好!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 16:11 , Processed in 0.039040 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表