Có ai biết thư viện thao tác bit tốt cho ANSI C không? Những gì tôi về cơ bản cần, là khả năng, giống như trong Jovial để thiết lập bit cụ thể trong một biến, một cái gì đó giống nhưThư viện thao tác bit cho ANSI C
// I assume LSB has index of 0
int a = 0x123;
setBits(&a,2,5, 0xFF);
printf("0x%x"); // should be 0x13F
int a = 0x123;
printf("0x%x",getBits(&a,2,5)); // should be 0x4
char a[] = {0xCC, 0xBB};
char b[] = {0x11, 0x12};
copyBits(a,/*to=*/4,b,/*from=*/,4,/*lengthToCopy=*/8);
// Now a == {0x1C, 0xB2}
Có một thư viện tương tự gọi là bitfile, nhưng nó dường như không hỗ trợ thao tác bộ nhớ trực tiếp. Nó chỉ hỗ trợ cho ăn bit để tập tin suối.
Không khó để viết, nhưng nếu có điều gì đó được kiểm tra - tôi sẽ không phát minh lại bánh xe.
Có thể thư viện này tồn tại như một phần của thư viện lớn hơn (bzip2
, gzip
là các nghi phạm thông thường)?
http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c Bao gồm các câu trả lời trong các hàm nếu bạn phải. – dmckee
@dmckee câu trả lời không bao gồm chức năng 'copyBits'. Và gói những thứ trong các chức năng không phải là một "phải" nói chung, nhưng nó là phải cho mã có cấu trúc tốt. –