如何解决使用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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。