【问题标题】:Convert binarystring to int, in C or C++ [duplicate]在 C 或 C++ 中将二进制字符串转换为 int [重复]
【发布时间】:2014-06-30 06:30:38
【问题描述】:

我有一个用 0 和 1 填充的字符串,想从中取出一个整数: (Arduino UNO 中的平台)

String bitString = ""; 
int Number;
int tmp;

bitString = "";
  for (i=1;i<=10;i++)
  {
    tmp= analogRead (A0);
    bitString +=  tmp % 2;
    delay(50);
  }
// now bitString contains for example "10100110" 
// Number = bitstring to int <-------------
// In the end I want that the variable Number contains the integer 166

【问题讨论】:

  • @LaughDonor 看起来这不适用于 Arduino
  • :/ 我不确定该平台上是否所有库都可用。
  • long strtol (const char String_Input[], char **End_Pointer, int Base); 即 int num = strtol(bitString, NULL, 2);

标签: c string arduino int type-conversion


【解决方案1】:

你根本不需要一串比特。只需这样做:

  int n = 0;  // unsigned might be better here
  for (i = 0; i < 10; i++) {
    int bit = analogRead(A0) & 1;
    putchar('0' + bit);
    n = (n << 1) | bit;
    delay(50);
  }
  printf("\n%d\n", n);

【讨论】:

  • 看起来可以完成这项工作。如何打印出二进制字符串?
  • 这取决于。我将编辑上面的内容以显示一种方式。
【解决方案2】:

你可以使用 strtol() 函数:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, const char * argv[])
{
char *a = "10100110";

int b = (int) strtol(a, NULL, 2);

printf("%d", b); //prints 166

return 0;
}

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 2014-11-28
    • 2020-08-27
    • 1970-01-01
    • 2015-12-08
    • 2012-08-16
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多