I have got a String filled up with 0 and 1 and would like to get an Integer out of it:
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
-
What is the question? What do you expect this code to do and what is it doing? What else have you tried?Craig– Craig2014年05月12日 18:42:40 +00:00Commented May 12, 2014 at 18:42
-
@Craig I eddited the question. For example If the bitString contains a "10100110" I want the programm to save it as the decimal 166 in the int variable.kimliv– kimliv2014年05月12日 18:46:37 +00:00Commented May 12, 2014 at 18:46
-
Do you need the string? You could create the integer representation directly.Craig– Craig2014年05月12日 19:14:56 +00:00Commented May 12, 2014 at 19:14
-
@Craig i would also like to print out the bitstringkimliv– kimliv2014年05月12日 19:15:40 +00:00Commented May 12, 2014 at 19:15
2 Answers 2
If you only need the string for printing you can store value in an integer and then use the Serial.print(number,BIN) function to format the output as a binary value. Appending integers to strings is a potentially costly operation both in performance and memory usage.
int Number = 0;
int tmp;
for (int i=9;i>=0;i--) {
tmp = analogRead (A0);
Number += (tmp % 2) << i;
delay(50);
}
Serial.print(Number, BIN);
-
Yes your solution looks more efficient! and does the workkimliv– kimliv2014年05月12日 19:36:06 +00:00Commented May 12, 2014 at 19:36
Check out strtoul()
It should work something like this:
unsigned long result = strtoul(bitstring.c_str(), NULL, 2);
Now you have a long variable which can be converted into an int if needed.
-
@kimliv Did you add .c_str() to the end of bitstring as Peter pointed out above? c_str() should return a const char*.Doowybbob– Doowybbob2014年05月12日 19:22:24 +00:00Commented May 12, 2014 at 19:22
-