使用std :: cout打印分配给十六进制值的char时输出奇怪

问题描述

我正在尝试打印这些数据类型。但是我得到的输出很奇怪,而不是我的预期。

lst = ["S1","S1","L","L"]

limit = 2
value = "L"

new_lst = []
counter = 0
for i in lst:
    if counter == limit and i == value:
        continue
    if i == value:
        counter += 1
    new_lst.append(i)

print(new_lst)

解决方法

您很有可能希望将data1和data3打印为某种数字。但是,数据类型是字符,这就是为什么C ++(或C)将它们解释为字符,将0x11映射到相应的ASCII字符(控制字符)的原因,除了一些其他字符(请参见ASCII表)以外,对于0x22也是如此。 如果要将这些字符打印为数字,则需要先将它们转换为int,然后再打印出来(适用于C和C ++):

cout << (int)data1 << endl;

或更多种C ++风格将是:

cout << static_cast<int>(data1) << endl;

如果要以十六进制显示数字,则需要使用hex IO操作器更改默认输出基数。之后,所有输出均以十六进制完成。如果要切换回十进制输出,请使用dec。有关详细信息,请参见cppreference.com

cout << hex << static_cast<int>(data1) << endl;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...