本文主要介绍数据长度为107bit(任意长度列表元组和字符串中最后一个元素的索引为),下面一起看看数据长度为107bit(任意长度列表元组和字符串中最后一个元素的索引为)相关资讯。
如果byte_t类型尚未定义:
# include stdint . htypedef uint 8 _ t byte _ t;//typedef无符号char byte _ t;// 1字节,8位,一般系统能表示的最小字节数据。
//位写函数uint32 _ tbit _ set (byte _ t * data,size _ tbits,uint 32 _ tvalue){ uint 32 _ tmask;if(bits = = 32){ reinterpret _ castuint 32 _ t *(data)[x]= value;} else if(bits = = 24){ mask = 0x 00 ffffff;数据= x * 3;uint 32 _ t * p = reinterpret _ castuint 32 _ t *(数据);* p = ~ mask值=掩码;*p |=值;} else if(bits = = 16){ reinterpret _ castuint 16 _ t *(data)[x]= value;} else if(bits = = 8){ data[x]= value;} else if(bits 8){ mask =(1 bits)-1;x *=位;数据= x/8;值=掩码;x = 7;值= x;mask = x;mask = ~ maskbyte _ t n = data[0];n =掩码;n |=值;数据[0]= n;}返回0;}//位读取函数uint 32 _ tbit _ get(const byte _ t * data,int x,int bits){ uint 32 _ tmask;if(bits = = 32){ return reinterpret _ cast const uint 32 _ t *(data)[x];} else if(bits = = 24){ mask = 0x 00 ffffff;数据= x * 3;const uint 32 _ t * p = reinterpret _ castconst uint32_t*(数据);return *p掩码;} else if(bits = = 16){ return reinterpret _ cast const uint 16 _ t *(data)[x];} else if(bits = = 8){ return data[x];} else if(bits 8){ mask =(1 bits)-1;x *=位;数据= x/8;x = 7;return (data[0]x)掩码;}}此位集是c位集的扩展版本,支持任意长度的数据:
templates dt: : size _ t bitsize struct bitset{public: const static std: : siz: 0);public: bitset{ this-reset;} size _ t sizeconst { return bitsize;} bool bit(size _ t id)const { return(data[id/8](id 0x 07))0x 01;};bool运算符[](size _ t id)const { return this-bit(id);} void set { memset(data,0xff,byte _ size);} bool set(size _ t id){ byte _ t b = data[id/8];b | = 1(id 0x 07);返回true} void reset { memset(data,0,byte _ size);} bool reset(size _ t id){ byte _ t b = data[id/8];b = ~(1(id0x 07));返回false}public:字节t数据[字节大小];};文章发表于2017-02-04 07 echo 0-@ q。q.com26:45 csdn,现在转到博客公园。
标签:
字节功能
了解更多数据长度为107bit(任意长度列表元组和字符串中最后一个元素的索引为)相关内容请关注本站点。