1、流输出
#include <iostream>
#include <bitset>///c++中控制进制的头文件
#include <stdlib.h>///c中的函数库
#include <bits/stdc++.h>///万能头文件,如果选用此头文件,就不用其他所有头文件
using namespace std;
int main()
{
int a = 100;
cout<<"十进制 "<<dec<<a<<endl;
cout<<"十六进制 "<<hex<<a<<endl;
cout<<"八进制 "<<oct<<a<<endl;
cout<<"二进制 "<<bitset<8>(a)<<" "<<bitset<32>(a)<<endl; // 这里使用了bitset类来输出2进制数据
return 0;
}
使用过程中注意将char、byte等类型强转为int类型在进行打印,这是因为hex、oct、dec仅对int类型起作用。
cout << hex << int(data[0]); 发现输出的结果前面带了很多f。因为data[0]是有符号数,最高位为1时,转换为int时,其余位都为1,cout << hex << (unsigned int) (unsigned char)data[0];结果正确。
对于小于16的char,输出只显示一位,如果希望都显示两位,可以在输出前设置cout << setfill('0') << setw(2);
原文链接:使用STL中的库函数直接输出十六进制、八进制和二进制
2、printf
#include <stdio.h>
int main()
{
int a=90;
printf("十进制 %d\n", a);
printf("八进制 %o %#o\n", a, a);
printf("十六进制 %x %X %#x %#X\n", a, a, a, a);
char binary_text[100];
_itoa(a, binary_text, 2);
printf("二进制 %s\n", binary_text);
}
输出为
十进制 90
八进制 132 0132
十六进制 5a 5A 0x5a 0X5A
二进制 1011010
高位不足添0可以在百分号后添加0x其中x为要显示的位数,如果不足x位就补0,够x位就不用补
原文链接:16进制输出的几种格式