c++ 如何输出8进制和十六进制和二进制

头文件iostream中提供控制符:

dec:指示cout以十进制输出。 hex:指示cout以十六进制输出。 oct:指示cout以八进制输出。

示例:

/*by kzl*/
#include<iostream>
#include<climits>
using namespace std;


int main(){
    int n_max = 42;
    cout<<n_max<<endl;
    cout<<hex;
    cout<<n_max<<endl;
    cout<<oct;
    cout<<n_max<<endl;
return 0;
}

结果:



输出二进制有些麻烦,因为并没有这样的控制符。不过可以使用bitset把要输出的数变成二进制存储输出。

示例:

/*by kzl*/
#include<iostream>
#include<bitset>
using namespace std;
const int num = 31;//num表示bitset声明的位数,即有多少位输出。
int main(){
    int n_max = 42;
    cout<<(bitset<num>)n_max<<endl;
return 0;
}
结果:



  • 22
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个将二进制转换为十六进制的示例: ```c #include <stdio.h> #include <string.h> // 将二进制字符串转换为十六进制字符串 char* binToHex(const char* bin) { static const char* hex = "0123456789ABCDEF"; static char result[256]; int len = strlen(bin); int i, j; for (i = 0, j = 0; i < len; i += 4) { int n = 0; n |= (bin[i + 0] - '0') << 3; n |= (bin[i + 1] - '0') << 2; n |= (bin[i + 2] - '0') << 1; n |= (bin[i + 3] - '0') << 0; result[j++] = hex[n]; } result[j] = '\0'; return result; } int main() { char* bin = "1101010111101101"; char* hex = binToHex(bin); printf("%s -> %s\n", bin, hex); return 0; } ``` 输出为:`1101010111101101 -> DAD`。 以下是一个将十六进制转换为二进制的示例: ```c #include <stdio.h> #include <string.h> // 将十六进制字符串转换为二进制字符串 char* hexToBin(const char* hex) { static char result[256]; int len = strlen(hex); int i, j; for (i = 0, j = 0; i < len; i++) { char c = hex[i]; if (c >= '0' && c <= '9') { result[j++] = (c - '0') & 0x01 ? '1' : '0'; result[j++] = (c - '0') & 0x02 ? '1' : '0'; result[j++] = (c - '0') & 0x04 ? '1' : '0'; result[j++] = (c - '0') & 0x08 ? '1' : '0'; } else if (c >= 'A' && c <= 'F') { result[j++] = (c - 'A' + 10) & 0x01 ? '1' : '0'; result[j++] = (c - 'A' + 10) & 0x02 ? '1' : '0'; result[j++] = (c - 'A' + 10) & 0x04 ? '1' : '0'; result[j++] = (c - 'A' + 10) & 0x08 ? '1' : '0'; } } result[j] = '\0'; return result; } int main() { char* hex = "DAD"; char* bin = hexToBin(hex); printf("%s -> %s\n", hex, bin); return 0; } ``` 输出为:`DAD -> 1101010111101101`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值