C ++中的位缓冲区

插口

我正在做一个分配工作,需要向缓冲区中写入位,一旦缓冲区中已填充8位,就将刷新。(霍夫曼压缩)

输入期间分配/保存中间阶段时出现问题。所以我做了一些测试

char buf = 0;

cout << (buf | (1 << 1));
buf = (buf | (1 << 1));
cout << buf;

但不明白为什么我不能保存中间阶段。其输出将是:

2"happy face"

代替

22

您能教我如何保存中间阶段吗?

基本上,我需要一点一点地写入缓冲区,并且一旦缓冲区是一个字节,就将其刷新到我的输出文件中。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

原因有点棘手-它与您要写入的表达式的类型有关cout,而不是与按位表达式的结果所获得的值有关。

在第一种情况下,表达式为(buf | (1 << 1))根据C ++的规则,此表达式的类型为int:的左侧OR扩展为与右侧匹配。

在第二种情况下,表达式的类型为char,因为该操作已完成,并且结果已转换回char

这就是为什么第一个值像数字一样解释的原因,而第二个值像在系统上打印时对应于that的ASCII字符代码2一样被解释。添加演员表可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中的缓冲区大小

来自分类Dev

在C ++中解析协议缓冲区

来自分类Dev

C中的缓冲区溢出与获取

来自分类Dev

在C#中同步缓冲区

来自分类Dev

C中自发的缓冲区溢出

来自分类Dev

c + +和DX11中的动态常量缓冲区或动态顶点缓冲区

来自分类Dev

您将如何限制缓冲区大小并返回c ++中的缓冲区限制?

来自分类Dev

C中循环缓冲区中的反向遍历

来自分类Dev

C ++刷新缓冲区

来自分类Dev

C缓冲区指针

来自分类Dev

缓冲区溢出 C

来自分类Dev

协议缓冲区C ++中的异常处理

来自分类Dev

C ++读取缓冲区中的整个文件

来自分类Dev

缓冲区数组在C中的for循环中溢出

来自分类Dev

在C中的fgets()之后清除输入缓冲区

来自分类Dev

在C ++中实现栅格化和深度缓冲区

来自分类Dev

C缓冲区溢出中的链接列表

来自分类Dev

在C中为未知(大小)结构创建缓冲区

来自分类Dev

C ++中getline的缓冲区大小限制

来自分类Dev

为C中的缓冲区(结构类型)分配内存

来自分类Dev

如何在C中返回缓冲区地址

来自分类Dev

是否可以在C ++中以零拷贝拼接缓冲区?

来自分类Dev

编码OpenGL在C中捕获的缓冲区

来自分类Dev

C中的缓冲区互斥量和条件变量

来自分类Dev

在C中如何读取超出缓冲区末尾的内容?

来自分类Dev

如何在流缓冲区C中添加参数

来自分类Dev

检查FlexBuffers缓冲区在C ++中是否未损坏

来自分类Dev

消除线程中的缓冲区溢出(C)

来自分类Dev

消除线程中的缓冲区溢出(C)