2012-04-17 9 views
12

Tôi muốn chuyển đổi một chuỗi, sử dụng lớp chuỗi - thành nhị phân. Cách nhanh nhất để làm nhân vật này theo nhân vật là gì. Vòng lặp? Hoặc là có một số chức năng ra khỏi đó sẽ chuyển đổi cho tôi? 1 và 0 của nhị phân.Cách nhanh nhất để chuyển đổi chuỗi thành nhị phân?

Một chuỗi hạnh phúc:

#include <string> 
using namespace std; 
int main(){ 
    myString = "Hello World"; 
} 
+1

bạn muốn điều này: http://stackoverflow.com/questions/505021/get-bytes-from-stdstring-in-c – Serdalis

+0

@Serdalis Tôi thực sự không biết chuyện gì đang xảy ra ở đó. – Derp

+0

Điều gì bạn muốn xem là đầu ra cho "Xin chào, thế giới"? 11 * 8 '0' hoặc' 1' ký tự đại diện cho mã ASCII nhị phân của các ký tự chuỗi, hoặc một cái gì đó khác? – dasblinkenlight

Trả lời

29

Sử dụng std::bitset sẽ làm việc:

#include <string> 
#include <bitset> 
#include <iostream> 
using namespace std; 
int main(){ 
    string myString = "Hello World"; 
    for (std::size_t i = 0; i < myString.size(); ++i) 
    { 
     cout << bitset<8>(myString.c_str()[i]) << endl; 
    } 
} 

Output:

01001000 
01100101 
01101100 
01101100 
01101111 
00100000 
01010111 
01101111 
01110010 
01101100 
01100100 
+13

Hoặc chỉ cần 'bitet <8> (myString [i])' –

+1

để bitset <8> sẽ cung cấp cho bạn base-256, nếu bạn muốn nói base-255 hoặc base-257 chỉ cần thêm -1 và +1? – pyCthon

+0

nếu chúng tôi muốn tổng hợp các kết quả đầu ra sao cho nếu có một bit tràn (0 hoặc 1) ở cuối tổng trên mặt MSB, thì sẽ được thêm vào câu trả lời cuối cùng của tổng số một lần nữa. Làm thế nào chúng ta có thể làm điều đó? – user899714