将字符串转为16进制数_C++ 如何输出各种进制的数?OJ刷题利器 bitset

1c1edcee3d5833185fcfe031f6891638.png

问题背景

熟悉C语言的大概都知道,在C语言里可以用printf中的 %o %x %d 来分别输出 8 进制、16进制、10进制的数,但唯独不支持二进制。

因此用C++的时候潜意识里也认为转二进制需要自己造轮子,于是为了一道题自己写了半天。之后偶然发现原来在C++里,你可以愉快的使用bitset这个库来完成你的需求。

下面就来介绍一下 bitset 的使用方法,很简单很好记,在比赛时可以大大加快你的解题速度。

正文

  1. 首先当然是引入 bitset 了...
include <bitset>

2. 常用方法

bitset<n> b;	          //b有n位,每位都为0
bitset<n> b(u);	          //b是unsigned long型u的一个副本
bitset<n> b(s);	          //b是string对象s中含有的位串的副本
bitset<n> b(s, pos, n);	  //b是s中从位置pos开始的n个位的副本

注意:bitset 将传入参数转化为二进制补码形式。

3. 输出

输出时用to_string(),转为字符串输出。

举个 :

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

int main(int argc, char const *argv[]){
	bitset<8> n(15);
	cout<<n.to_string()<<endl;
	bitset<8> b(-13);
	cout<<b.to_string()<<endl; 
	return 0;
}

输出结果:

00001111
11110011

拓展

看完了二进制,我们再拓展一下看看其它进制在C++中如何输出,毕竟OJ中很多题目都涉及到进制转换表示,掌握这些诀窍,对自己的解题速度的提升还是有帮助的。

#include<iostream>
using namespace std;
 
int main(int argc, char const *argv[]){
    int n = 42;
    cout<<n<<endl;
    cout<<hex<<n<<endl;        // 输出 16 进制
    cout<<oct<<n<<endl;        // 输出 8 进制
    return 0;
}

输出结果:

42
2a
52
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值