1 字节整数不转换 I/O 格式
1 byte integer doesn't convert i/o formats
我写了下面的代码,它以十六进制格式输入一个数字并以十进制形式输出:-
#include<iostream>
#include<iomanip>
#include<stdint.h>
using namespace std;
int main()
{
uint8_t c;
cin>>hex>>c;
cout<<dec<<c;
//cout<<sizeof(c);
return 0;
}
但是当我输入 c(十六进制表示 12)时,输出再次是 c(而不是 12)。有人可以解释一下吗?
这是因为uint8_t
通常是unsigned char
的typedef
。 所以它实际上是将'c'
读作 ASCII 0x63
.
请改用int
。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int c;
cin>>hex>>c;
cout<<dec<<c<<'n';
return 0;
}
程序输出:
$ g++ 测试.cpp$ ./a.outC12
这是uint8_t
实际上是unsigned char
这一事实的不幸副作用。因此,当您存储 c 时,它存储的 ASCII 值为 c(99 十进制),而不是数值 12。
uint8_t
是unsigned char
的别名,不幸的是ostream
尝试将其输出为字符。这已在 C++20 std::format
中修复:
#include <format>
#include <iostream>
#include <stdint.h>
int main() {
uint8_t n = 42;
std::cout << std::format("{}", n);
}
输出:
42
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 检查不带转换的扫描格式
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 将CHW格式的浮点向量转换为cv::Mat
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 如何在C++中将 chrono::秒转换为 HH:MM:SS 格式的字符串?
- 以C++格式将字符串转换为数字
- 将 BGR 图像转换为 jpeg 格式的 base64 字符串
- 将'\x00\x00\x00'格式的字符串转换为无符号字符数组
- 如何在C++中将"%Y%m%d"格式字符串转换为time_t变量?
- 如何将 Openh264 解码帧无延迟输出格式转换为 OpenCV 矩阵
- 一直在尝试在 c++ 中将 12 小时制格式转换为 24 小时制格式
- FFMpeg与OpenCV的格式转换/简单转换
- 格式转换在OpenGL图像中
- 如何将位图字体从 C 标头格式转换为原始位
- 如何在黑莓10中将日期格式转换为字符串
- 将opencv图像cv::Mat格式转换为c# BitmapImage
- 如何将QImage格式转换为OpenGL支持的格式
- 如何从"STL"格式转换为"3DS"
- 图像格式转换opencv