Chuyển đổi một chuỗi bit thành một giá trị số nguyên


7

Tôi đã có một Chuỗi chứa đầy 0 và 1 và muốn lấy một Số nguyên từ nó:

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

Câu hỏi là gì? Bạn mong đợi mã này để làm gì và nó đang làm gì? Bạn đã thử cái gì khác?
Craig

@Craig Tôi chỉnh sửa câu hỏi. Ví dụ: Nếu bitString chứa "10100110", tôi muốn chương trình lưu nó dưới dạng số thập phân 166 trong biến int.
kimliv

Bạn có cần chuỗi không? Bạn có thể tạo đại diện số nguyên trực tiếp.
Craig

@Craig tôi cũng muốn in ra chuỗi bit
kimliv

Câu trả lời:


6

Nếu bạn chỉ cần chuỗi để in, bạn có thể lưu giá trị trong một số nguyên và sau đó sử dụng hàm Serial.print (số, BIN) để định dạng đầu ra dưới dạng giá trị nhị phân. Nối các số nguyên vào chuỗi là một hoạt động có khả năng tốn kém cả về hiệu suất và sử dụng bộ nhớ.

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);

Có giải pháp của bạn trông hiệu quả hơn! và thực hiện công việc
kimliv

4

Thủ tục thanh toán strtoul()

Nó sẽ hoạt động như thế này:

unsigned long result = strtoul(bitstring.c_str(), NULL, 2);

Bây giờ bạn có một biến dài có thể được chuyển đổi thành int nếu cần.


@kimliv Bạn có thêm .c_str () vào cuối chuỗi bit như Peter đã chỉ ra ở trên không? c_str () sẽ trả về một const char *.
Doowybbob

nó đang hoạt động theo cách đó
kimliv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.