首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c++中将二进制日期保存到文件中

在c++中将二进制日期保存到文件中
EN

Stack Overflow用户
提问于 2012-11-08 12:38:08
回答 2查看 128关注 0票数 0

我的algoritm生成9位和17位的流,我需要找到解决方案来将这些数据存储在文件中。但我不能只将9位存储为int,将17位存储为int_32。

例如,如果我的algoritm生成10x9bit和5x17bit,则输出文件大小需要为22字节。

另外,要解决的一个大问题是输出文件可能非常大,并且文件的大小未知。

我现在唯一的想法是使用bool *vector;

EN

回答 2

Stack Overflow用户

发布于 2012-11-08 14:53:26

如果您必须保存动态位,那么您可能应该保存两个值:第一个是位数(如果位是从0到x的连续位),或者是一个位掩码来说明哪些位是有效的;第二个是代表您的位的32位整数。

票数 0
EN

Stack Overflow用户

发布于 2012-11-08 17:35:11

从字面上看你的例子:如果你想存储175位,并且它由两个不同长度的未知数量的实体组成,那么文件绝对不可能只有22个字节。你需要知道文件中的内容,你需要它的长度。如果你只有两个可能的大小,那么它只能是一个比特。0表示9位,1表示17位。

代码语言:javascript
复制
|0|9bit|0|9bit|1|17bit|0|9bit|1|17bit|1|17bit|...

因此,对于您的示例,您需要10*(1+9)+5*(1+17) =190bit~ 24字节。未完成的2位需要用0填充,以便在字节边界对齐。事实上,您将继续读取该文件,就好像存在另一个实体(因为您说您不知道该文件有多长),这应该不是问题,因为最后这样的填充总是少于9位。当到达文件末尾时,您可以丢弃最后一个未完成的读取。

这种方法确实需要实现字节级流的位级操作。这意味着仔细的掩蔽和逻辑操作。BASE64就是这样,只是比你简单,只由固定的6位实体组成,存储在文本文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13282489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档