小编Joe*_* M.的帖子

在C++中使用按位数据的结构

可能重复:
将位字段转换为int

我正在开发一个应用程序,其中一部分处理包含许多1位标志的16位字.我使用类似于下面所示的结构处理数据:

struct mystruct
{
   uint16_t Reserved1   :3;
   uint16_t WordErr     :1;
   uint16_t SyncErr     :1;
   uint16_t WordCntErr  :1;
   uint16_t Reserved2   :10;
};
Run Code Online (Sandbox Code Playgroud)

即该结构包含一个16位变量,该变量作为一些较小的(在某些情况下,1位标志)块处理.

我的问题是,是否有一种简单的方法可以将整个16位字作为一个值处理,比如将其输出到控制台或文件,或将其添加到另一个数据结构?除了移动单个结构元素并将它们添加到临时uint16_t变量之外,我不知道这样做的任何方法.似乎可能有一种更简单的方法来提取整个单词,但我找不到有关编译器如何处理这样的结构的任何信息.

编辑:我想这可能是显而易见的,但我想简单地做的是能够单独访问1位标志,以及将结构用作uint16_t类型的单个变量(即无符号短,16位).

c++ struct bit-manipulation

7
推荐指数
1
解决办法
1万
查看次数

C++ ios :: out文件流标志:为什么它会影响性能?

我的程序正在将uint16_t的大数字(每次250,000)写入文件.出于某种原因,设置ios :: out标志(不必要,因为VS2010会自动设置它)导致性能下降大约10倍.(见前/后).知道设置那个可能导致如此巨大性能差异的标志是什么意思吗?

之前:

fileoutput.flags(ios::out); 
Run Code Online (Sandbox Code Playgroud)

之前

后:

//fileoutput.flags(ios::out);  
Run Code Online (Sandbox Code Playgroud)

后

c++ out filestream ios

2
推荐指数
1
解决办法
341
查看次数

标签 统计

c++ ×2

bit-manipulation ×1

filestream ×1

ios ×1

out ×1

struct ×1