一.指定格式输出

1.C中指定格式输出

printf("%05o\n",);    //按八进制格式输出,保留5位高位补零
printf("%03d\n",); //按十进制格式输出,保留3位高位补零
printf("%05x\n",); //按十六进制格式输出,保留5位高位补零

2.C++中指定格式输出

#include <bitset>
#include<iostream>
using namespace std;
int main()
{
cout << "35的8进制:" << std::oct << << endl;
cout << "35的10进制" << std::dec << << endl;
cout << "35的16进制:" << std::hex << << endl;
cout << "35的2进制: " << bitset<>() << endl; //<8>:表示保留8位输出
return ;
}

二.C/C++各种进制转换库函数

1.任意2~36进制数转化为10进制

自己实现函数

int Atoint(string s,int radix)    //s是给定的radix进制字符串
{
int ans=;
for(int i=;i<s.size();i++)
{
char t=s[i];
if(t>=''&&t<='') ans=ans*radix+t-'';
else ans=ans*radix+t-'a'+;
}
return ans;
}

strol()函数:

函数原型:long int strtol(const char *nptr, char **endptr, int base)

格式:base是要转化的数的进制,非法字符会赋值给endptr,nptr是要转化的字符,

例如:

#include<stdio.h>
int main()
{
char a[]="10549stend#12";
char *stop;
int ans=strtol(a, &stop, ); //将八进制数1054转成十进制,后面均为非法字符
printf("%d\n",ans);
printf("%s\n", stop);
return ;
}
//输出556

*注意:

1)如果base为0,且字符串不是以0x(或者0X)开头,则按十进制进行转化。

2)如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。

3)如果base不等于0和16,并且字符串以0x(或者0X)开头,那么x被视为非法字符。

4)对于nptr指向的字符串,其开头和结尾处的空格被忽视,字符串中间的空格被视为非法字符 。

2.将10进制数转换为任意的n进制数,结果为char型。

自己实现函数

string intToA(int n,int radix)    //n是待转数字,radix是指定的进制
{
string ans="";
do{
int t=n%radix;
if(t>=&&t<=) ans+=t+'';
else ans+=t-+'a';
n/=radix;
}while(n!=); //使用do{}while()以防止输入为0的情况
reverse(ans.begin(),ans.end());
return ans;
}

1)itoa()函数(可以将一个10进制数转换为任意的2-36进制字符串):

函数原型:char*itoa(int value,char*string,int radix);

格式:itoa(num, str, 2); num是一个int型的,是要转化的10进制数,str是转化结果,后面的值为目标进制。

#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = ;
char str[];
_itoa(num, str, ); //c++中一般用_itoa,用itoa也行,
printf("%s\n", str);
return ;
}

2)sprintf()函数(可以将一个10进制数转换为指定格式的n进制字符串)

函数原型:int sprintf( char *buffer, const char *format, [ argument] … )

#include<stdio.h>
int main()
{
char s[]={};
sprintf(s, "%d", ); //十进制输出产生"123"
sprintf(s, "%4d%4d", , ); //指定宽度不足的左边补空格,产生:" 1234567"
sprintf(s, "%8o", ); //八进制输出,宽度占8个位置
sprintf(s, "%8x", ); //小写16 进制,宽度占8 个位置,右对齐
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
int i = ;
sprintf(s, "%.2f", i); //注意这是不对的
sprintf(s, "%.2f", (double)i); //要按照这种方式才行
return ;
}

三.使用字符串流string,stream

1)8,16->10

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(void)
{
string s="";
int a;
stringstream ss;
ss<<hex<<s; //以16进制读入流中
ss>>a; //10进制int型输出
cout<<a<<endl;
return ;
}
//输出:32

2)10->8,16

#include<cstdio>
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(void)
{
string s1,s2;
int a=;
stringstream ss;
ss<<oct<<a; //10进制转成八进制读入流中,再以字符串输出
ss>>s1;
cout<<s1<<endl; //输出:36
ss.clear(); //不清空可能会出错。
ss<<hex<<a; //10进制转成十六进制读入流中,,再以字符串输出
ss>>s2;
cout<<s2<<endl; //输出:1e
return ;
}

C++中的各种进制转换函数汇总及学习的更多相关文章

  1. C++中的各种进制转换函数汇总

    C++中的各种进制转换函数汇总 1.在C中,按指定进制格式输出如下: #include <iostream> #include <cstdio> using namespace ...

  2. Python中进制转换函数的使用

    Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...

  3. php进制转换函数

    1 十进制(decimal system)转换函数 ① 十进制转二进制 string  decbin(int number). 参数为一个十进制整型数字,不是整型数字会自动转为整型数字,如'3'转为3 ...

  4. 写一个比较全的进制转换函数--ic

    //写一个比较全的进制转换函数-----未完成 #include <stdio.h> //D进制转换后 (比如10-2进制) 结果可能会很大 需要很长的字符串来存 #include < ...

  5. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  6. Python内置进制转换函数(实现16进制和ASCII转换)

    在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...

  7. chr()//ord() //进制转换函数//eval()//文件函数//split()

    1.chr() 函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 用法:chr(i) i可以是10进制也可以是16进制的形式的数字. 2.or ...

  8. delphi 中字符串与16进制、10进制转换函数

      //字符串转成16进制代码function strToHexStr(str:string):string;varc:char;ss:string;i:integer;beginwhile str& ...

  9. c++ 进制转换函数

    转自:https://blog.csdn.net/wangjunchengno2/article/details/78690248 strtol 函数: 它的功能是将一个任意1-36进制数转化为10进 ...

随机推荐

  1. 【树剖求LCA】树剖知识点

    不太优美但是有注释的版本: #include<cstdio> #include<iostream> using namespace std; struct edge{ int ...

  2. Codesys——TON和TOF的使用方法

    1. 引言 介绍延迟导通.延迟关闭函数的使用方法. 2. 函数描述 TON: 当IN为FALSE时,输出Q为FALSE: 当IN为由FALSE变为TRUE时,延迟导通过程中Q为FALSE,当时间到Q变 ...

  3. linux用户态和内核态通信之netlink机制【转】

    本文转载自:http://blog.csdn.net/zcabcd123/article/details/8272360 这是一篇学习笔记,主要是对<Linux 系统内核空间与用户空间通信的实现 ...

  4. sql 语句NVL()用法

    一NVL函数是一个空值转换函数 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值. 该函数的目的是把一个空值(null)转换成一个实际的值.其表达式的 ...

  5. 为什么要使用XHTML?

    XHTML 是什么? XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language). XHTML 的目标是取代 HTML. XHTML 与 HTML ...

  6. PCB MongoDB 索引

    在索引在数据库中非常重要,当然在MongoDB也是一样啦. 一.获取索引 db.ppeflow.getIndexes() 初始化,每个集都默认_id字段为主键objectid,索引名为_id_ 二.创 ...

  7. [Swift通天遁地]七、数据与安全-(14)使用单元测试进行邮箱格式的验证

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. Akka源码分析-local-DeathWatch

    生命周期监控,也就是死亡监控,是akka编程中常用的机制.比如我们有了某个actor的ActorRef之后,希望在该actor死亡之后收到响应的消息,此时我们就可以使用watch函数达到这一目的. c ...

  9. 音频处理中的尺度--Bark尺度与Mel尺度

    由于人耳对声音的感知(如:频率.音调)是非线性的,为了对声音的感知进行度量,产生了一系列的尺度(如:十二平均律),这里重点说下Bark尺度与Mel尺度.刚开始的时候,我自己也没弄明白这两个尺度的区别. ...

  10. CentOS 7.0 firewall防火墙关闭firewall作为防火墙,这里改为iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤: 1.先检查是否安装了: iptables service iptables status 2.安装ip ...