2009-07-17 32 views
5

Tôi đang làm việc trên ứng dụng dựa trên TCP xử lý các thông điệp bitpacked, có nghĩa là: Các thư được truyền/nhận không được căn chỉnh byte. Ví dụ 3 bit đại diện cho trường 1, trong đó 19 bit có thể đại diện cho trường 2. Câu hỏi của tôi là, có ai biết thư viện C# có thể lấy một bộ byte và thiết lập/nhận một dải bit tùy ý trong các byte đó không? Tôi đã thấy & tạo ra các tiện ích tương tự trong C/C++ nhưng tôi cần một giải pháp C# 100% và tôi không muốn phát minh lại bánh xe nữa.Quản lý dữ liệu được đóng gói bit bằng C#

Tôi đã xem lớp BitArray, nhưng nó không cho phép tham chiếu các dải bit tùy ý.

Trả lời

3

Check-out this CodeProject solution - đó là một mã nguồn mở quản lý bitstream lớp callable từ C#.

+0

Hoàn hảo. Chính xác những gì tôi đang tìm kiếm. – nathan

2

Tôi không biết bất kỳ lớp bcl nào cung cấp những gì bạn muốn. Nhưng bạn có thể sử dụng các hoạt động bitwise (shift, và, hoặc, ...) để trích xuất các trường mà bạn quan tâm.

Ví dụ, để có được một lĩnh vực bắt đầu từ bit 2 với kích thước của 5 bit sử dụng:

int extract = (source & 0x7C) >> 2; 
+0

Đây là phương pháp tôi đang sử dụng trong triển khai C++ hiện tại của mình. Tôi đã hy vọng tôi đã không phải cổng thực hiện để C# và có thể sử dụng một thư viện bên thứ 3. Tôi quan tâm đến một số thư viện C# bóng bẩy để thực hiện điều này. Tôi chỉ không muốn "tái phát minh ra bánh xe" một lần nữa. – nathan

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