2011-02-03 53 views
6

Tôi có một chuỗi dài chứasử dụng thùng chứa bitset trong C++

8 byte bãi hex là

8 char là 801000000000000

Nó có nghĩa là bit 1 và 12 là trên.

Làm cách nào để sử dụng tính năng bitet trong C++ và làm cho cuộc sống của tôi trở nên dễ dàng.

Cảm ơn

+4

Câu hỏi là gì? Tôi không thấy không có '? 'Trong đó. – karlphillip

+0

@karlphillip ..any? * trong đó. –

Trả lời

7

Để làm gì? Câu hỏi ở đâu? Tôi thực sự không thể đưa ra một ví dụ hay về "làm thế nào nó sẽ làm cho cuộc sống của bạn dễ dàng hơn" mà không có vấn đề gì để giải quyết. Tất cả những gì tôi có thể làm là chỉ cho bạn những điều cơ bản về cách thức hoạt động của lớp.

Đây là liên kết trên interface. Nếu bạn muốn xử lý một tập hợp các bit kích thước đơn giản, không đổi thì bạn có thể dễ dàng thực hiện. Nếu bạn muốn có thể tăng hoặc thu nhỏ, hãy xem Boost. Dưới đây là một ví dụ nhanh với bitset tiêu chuẩn:

std::bitset<40> imFiveBytesLong; 

imFiveBytesLong.set(0, true); 

Bây giờ có vẻ như

0000000000000000000000000000000000000001 

với bộ chút 0. Và bạn có thể kiểm tra để xem nếu các bit được thiết lập bằng cách hỏi:

bool isItSet = imFiveBytesLong.test(0); 

Hoặc bạn có thể đếm số lượng các thiết lập bit bằng cách hỏi:

std::size_t numSet = imFiveBytesLong.count(); 

Sửa:

Để trả lời bình luận của bạn dưới đây kiểm tra các phương pháp to_ulong bitet và một trong số constructors của bitet. Đặt nó lại với nhau:

int main() 
{ 
    std::bitset<10> mySet(120ul);   // initialize from unsigned long 

    std::cout << mySet.to_uLong();   // print as an unsigned long 

    return 0; 
} 
+0

Làm thế nào tôi có thể làm cho chuỗi của tôi hoàn toàn unsigned dài và khởi tạo từ unsigned dài? – user79292

Các vấn đề liên quan