Stormer 发表于 2017-7-27 15:34:52

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

本帖最后由 Stormer 于 2017-7-27 23:41 编辑

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

有个字符串:

char strTemp;

它的内容是10101010.

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

比如有个变量:

byte bResult;

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

请问该怎么写?谢谢!

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

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

pz_cloud 发表于 2017-7-27 21:04:31

本帖最后由 pz_cloud 于 2017-7-28 00:32 编辑

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

        return sum+1; //arduino编译器有奇怪的问题,这里需要+1
}


使用方法:
char num[] = { '1','1','0','1' };
int i = array2int(num);

Stormer 发表于 2017-7-27 23:40:37

pz_cloud 发表于 2017-7-27 21:04
手动撸了个函数:




谢谢!大神辛苦啦

gdgzwqz 发表于 2020-6-21 17:43:28

本帖最后由 gdgzwqz 于 2020-6-21 17:45 编辑

楼主解决了问题,把答案公布出来,好!!!
页: [1]
查看完整版本: C语言将10101这样的字符串转换成二进制格式?