C ++ cout二进制值

时间:2014-08-05 21:16:44

标签: c++ binary cout

我有一个问题,我有一个无符号字符数组,我想打印它们但是当我使用cout时会打印一个不同的值。

数组包含二进制格式的值,no为0和1,但为表示巫婆字符。

要打印的数组:

[0] 147 unsigned char
[1] 252 'ü' unsigned char
[2] 170 'ª' unsigned char
[3] 194 'Â' unsigned char
[4] 108 'l' unsigned char

我得到了什么:

ô
ⁿ
¬
┬
l

当我把它写入文件时,表示是正确的,因为我在binay模式下打开了ofstream但是我找不到如何在cout中做同样的事情。

最好的问候

1 个答案:

答案 0 :(得分:1)

您是code pages的受害者。

回到过去,我们所关心的只是简单的英文字符。对于这些字符,我们定义了ASCII字符集。它定义了128个字符(0到127十进制),可打印字符从32(空格)开始。方便的是,ASCII字符集适合7位。

通过使用未使用的第8位,可以使用值128到255执行某些操作。问题是,很多人同时考虑了这一点,因此有很多不同的方法可以使系统显示这些前128位字符,用于许多不同的语言。

最终所有这些都得到了标准化。前128个字符在任何地方都是相同的,但128和以上的字符在代码页中定义。

chrisπάντα ῥεῖ一样,Windows控制台使用的代码页(code page 437)与使用Windows-1252的大多数其他Windows相同。

总之,在输入和输出的十进制值相同的意义上,您的输出是正确的,但它看起来是错误的,因为您在不同的代码页中查看它们。