帮看看如何处理

shn521 2011-12-11 01:05:19
有N组,每组里三个数,第一个占10位,第二个占10位,第3个占6位
我想尽可能的节省空间,然后把这批数存在文本里,应该如何定义
想放结构体里用位域,但百度了下,说不能跨字节操作。请问大家应该如何处理。
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 elegant87 的回复:]
C/C++ code

//C语言提供了位域进行指定位数操作

//int实际是4个字节,即32位
struct BitSet
{
int one :10; //10位
int two :10; //10位
int three:6; //6位
};
[/Quote]
++
mstlq 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 elegant87 的回复:]

每组里三个数,第一个占10位,第二个占10位,第3个占6位
如果这里的位数是其二进制的位数的话,就可以用bitset

C++提供了bitset类,方便我们操作;

C/C++ code

struct data
{
bitset<10>one;
bitset<10>two;
bitset<6>three;
};
[/Quote]
所以c里面楼主就用自己写一个跟bitset一样功能的东西,理论上无论楼主的“数组”有多大,bitset最多浪费不到8字节,很省空间,只是写入和读取都很麻烦……
省那么一点点内存空间,却耗费了很多cpu计算时间,楼主还得自己写相对复杂的代码,楼主先自己衡量一下是否值得吧
elegant87 2011-12-11
  • 打赏
  • 举报
回复

//C语言提供了位域进行指定位数操作

//int实际是4个字节,即32位
struct BitSet
{
int one :10; //10位
int two :10; //10位
int three:6; //6位
};
elegant87 2011-12-11
  • 打赏
  • 举报
回复
每组里三个数,第一个占10位,第二个占10位,第3个占6位
如果这里的位数是其二进制的位数的话,就可以用bitset

C++提供了bitset类,方便我们操作;


struct data
{
bitset<10>one;
bitset<10>two;
bitset<6>three;
};
elegant87 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shn521 的回复:]

引用 1 楼 mstlq 的回复:
自己写bitset……

请问那怎么写啊,假如第一个数位1011,第二个数为56,第三个数为7
用bitset怎么设置,然后又怎么写入文本及读取呢?
[/Quote]

bitset用来处理二进制位的,每一位的值为0 或者 1

不是你说的一个整数的位数
shn521 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
自己写bitset……
[/Quote]
请问那怎么写啊,假如第一个数位1011,第二个数为56,第三个数为7
用bitset怎么设置,然后又怎么写入文本及读取呢?
shn521 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
自己写bitset……
[/Quote]
请问那怎么写啊,假如第一个数位1011,第二个数为56,第三个数为7
用bitset怎么设置,然后又怎么写入文本及读取呢?
mstlq 2011-12-11
  • 打赏
  • 举报
回复
自己写bitset……

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧