Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的位字符串_C_Bitstring - Fatal编程技术网

C语言中的位字符串

C语言中的位字符串,c,bitstring,C,Bitstring,我必须在代码中实现位字符串(根据某些标准中给出的参数) 一些标准参数是位字符串(不同长度=3、7、24、1024等) 我将它们定义为:(例如:长度为3的位字符串) 我不允许使用位字段 有人能提出(如果可能)更好的实现方法吗?我想位图就是您想要的。(wiki:)还有一个从Linux内核移植的示例实现:。具体要求是什么?您对它的哪些具体部分有困难?上面的实现对我很有用。我只是在寻找一种更好的方法(如果可能的话)-因为C标准没有证明任何方法可以标记一位长的变量。可能有几种方法可以实现一个位字符串类,但

我必须在代码中实现位字符串(根据某些标准中给出的参数)

一些标准参数是位字符串(不同长度=3、7、24、1024等)

我将它们定义为:(例如:长度为3的位字符串)

我不允许使用位字段


有人能提出(如果可能)更好的实现方法吗?

我想位图就是您想要的。(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;