c++计算二进制值
C++ cout binary value
我有一个问题,我有一个无符号字符数组,我想打印它们,但是当我使用cout时,打印的值不同。
该数组包含二进制格式的值,没有0和1,但使用字符表示。
数组输出:
[0] 147 unsigned char
[1] 252 'ü' unsigned char
[2] 170 'ª' unsigned char
[3] 194 'Â' unsigned char
[4] 108 'l' unsigned char
我得到了什么:
ô
ⁿ
¬
┬
l
当我将其写入文件时,表示是正确的,因为我以二进制模式打开ofstream,但我找不到如何在cout中做同样的事情。
你是代码页的受害者。
在过去的日子里,我们所关心的只是简单的英语字符。对于这些字符,我们定义了ASCII字符集。它定义了128个字符(0到127十进制),可打印字符从32开始(空格)。方便的是,ASCII字符集适合7位。
通过使用未使用的第8位,可以处理128到255的值。问题是,很多人同时想到了这一点,所以有很多不同的方式来显示这前128个字符,对于许多不同的语言。
最终所有这些都标准化了。前128个字符在任何地方都是相同的,但128及以上的字符在代码页中定义。
就像chris和π α ντα ρ ε ε ν注释的那样,Windows控制台使用了一个不同的代码页(代码页437),而Windows的其他大部分使用Windows-1252。
总之,您的输出是正确的,因为输入和输出的十进制值是相同的,但它看起来是错误的,因为您在不同的代码页中查看它们。相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 计算二进制文件中的位数
- 计算大二进制矩阵中小二进制矩阵的出现
- 如何生成统一的随机二进制数以成对计算C++中的汉明距离?
- 在 64 位 Linux armv8 计算机上编译 32 位二进制文件时遇到问题
- 在计算负数的二进制补码时如何实现"+1"加法
- C/C++ 方法中最快/最短计算二进制数字总和/又名二进制中的 1 数
- 手动将二进制表达式计算为十六进制
- 编译后如何计算某些二进制功能(或基本块)的校验和
- 以二进制形式计算连续的 1
- 计算每个子树(二进制搜索树)具有特定属性的叶子的数量
- 如何在没有循环的二进制数字表示中只计算1位
- Wxwidgets 在另一台计算机上运行二进制文件时出现问题
- 为什么这个计算二进制搜索树中节点的递归函数总是返回比预期更大的结果
- 分别计算左右孩子的二进制树
- 计算 c# 中二进制文件符号的频率不起作用,但适用于等效的 c++ 代码
- 如何使用opencv函数计算图像的孔数(二进制)
- 如何使用二进制索引树来计算小于索引值的元素数量
- 以从 a 到 b 的数字的二进制表示形式计算 "1" 位数字的算法
- 是否可以在为Solaris SPARC生成二进制文件的英特尔计算机上编写QT C++项目