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-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); pz_cloud 发表于 2017-7-27 21:04
手动撸了个函数:
谢谢!大神辛苦啦 本帖最后由 gdgzwqz 于 2020-6-21 17:45 编辑
楼主解决了问题,把答案公布出来,好!!!
页:
[1]