C语言中的位字符串
我必须在代码中实现位字符串(根据某些标准中给出的参数) 一些标准参数是位字符串(不同长度=3、7、24、1024等) 我将它们定义为:(例如:长度为3的位字符串) 我不允许使用位字段C语言中的位字符串,c,bitstring,C,Bitstring,我必须在代码中实现位字符串(根据某些标准中给出的参数) 一些标准参数是位字符串(不同长度=3、7、24、1024等) 我将它们定义为:(例如:长度为3的位字符串) 我不允许使用位字段 有人能提出(如果可能)更好的实现方法吗?我想位图就是您想要的。(wiki:)还有一个从Linux内核移植的示例实现:。具体要求是什么?您对它的哪些具体部分有困难?上面的实现对我很有用。我只是在寻找一种更好的方法(如果可能的话)-因为C标准没有证明任何方法可以标记一位长的变量。可能有几种方法可以实现一个位字符串类,但
有人能提出(如果可能)更好的实现方法吗?我想位图就是您想要的。(wiki:)还有一个从Linux内核移植的示例实现:。具体要求是什么?您对它的哪些具体部分有困难?上面的实现对我很有用。我只是在寻找一种更好的方法(如果可能的话)-因为C标准没有证明任何方法可以标记一位长的变量。可能有几种方法可以实现一个位字符串类,但是如果没有某种“更好”的度量方法,就不可能对它们进行比较。您想到的方法有几种变体:使用short,int,或者长而不是炭;使用无符号数据类型而不是有符号数据类型;使用std::vector或自定义链表而不是数组。每种方法都有各自的优缺点。决定哪一个是最好的并不一定是明确的。这些位“字符串”将如何使用?您正在使用它们进行序列化吗?你(非常)关心内存使用情况吗?顺便说一句,你给出的3位和7位示例看起来很奇怪(没有双关语),谢谢Eric。上述实现仅接近位图。如果我需要一个7位长的位字符串,我将使用一个1字节长的数组&只保留设置7位的位计数。位图也需要相同的输入。
#define SIZE 1
struct bt_string
{
/* Array will be min 1 Byte Long,
* this parameter stores the number of Bits
* actually being used */
unsigned short int bit_length;
char bit_string [SIZE];
} sample_bit_string;