任意进制的转换(C,C++)itoa函数,strtol函数,bitset函数,oct函数,dec函数,hex函数

2023-11-16

十进制转换为(2-10)进制代码方法

#include<stdio.h>
int main()
{
	int a,b,count=0,i;
	scanf("%d%d",&a,&b);//a为需要转换的十进制数,b为需要转换成的进制数
	int arr[100];
	do
	{
		arr[count++]=a%b;   //举个例子比如说100转换为8进制
		                   //100%8=4,100/8=12,12%8=4,12/8=1;1%8=1,1/8=0;
						   //通过观察 1 4 4组成的144就是100转换为8进制后的数
						   //该算法建议在理解的基础上背诵它的转换方法 
		a=a/b;
	 } while(a!=0);
	 for(i=count-1;i>=0;i--)
	 {
	 	printf("%d",arr[i]);
	 }
 } 

 1173 十进制转换成n进制

输入要求:输入两个整数num和n,num表示要转换的数,n表示要转换成的进制。如10 2表示要求将十进制数10转换成二进制数。(2<=n<17)

输出要求:输出转化后的进制数,每个数字之后跟一空格,如果数字大于9,则输出大写英文字母(10-16分别对应A-F)。

输入样例   32685 13

输出样例   1 1 B 5 3 (注意看,输出每个数字间是有空格的,)

#include<stdio.h>
int main()
{
	int a,b,i,count=0;
	char arr[100];
	scanf("%d",&a);
	scanf("%d",&b);
	do{
		arr[count]=a%b;
		a=a/b;
		++count;
	}while(a!=0);
	
	for(i=count-1;i>=0;i--)
	{
		if(arr[i]>9)
		{
		printf("%c ",arr[i]-10+'A');//这里解释一下arr[]数组里存储的是ASCII,
		//比如说第一位arr[0]存储的是13这个数字对应的ASCII值,计算机内部存在自动转换, 
		//arr[i]-10+'A'通过这个操作可以实现(2-36)进制的转换 
		}
		else
		printf("%d ",arr[i]);
	}
	printf("\n");
}

任意(2-10)进制数转换为十进制

#include<stdio.h>
#include<math.h> 
int main()
{
	int arr[100],count=0,a,b,i,res=0;//res 是result结果的意思 
	scanf("%d%d",&a,&b);//a为需要转换为十进制的数,b为a的进制数
	        //举个例子 144 ,8进制的数想要转换为10进制 
			 //     观察发现 百位是1,十位是4,个位是4,1*8^2+4*8^1+4*4^0=144
			 //                                       百位   十位  个位             
	 do         
	{
		 arr[count++]=a%10;//用一个容器arr来存储a的末位上的数字 
		 a=a/10; 
	}while(a!=0);
	for(i=count-1;i>=0;i--)//逆序输出 
	{
		res=arr[i]*pow(b,i)+res;//这个是通过推导的具体数字总结的公式
		//这里调用函数pow要用头文件 #include<math.h> b指下面的数,i它对应的指数 
	}
   
    printf("%d",res); 
 } 

在C++中,可以直接调用函数进制转换

#include <iostream>
using namespace std;
int main()
{   cout << "35的8进制:" << oct << 35 << endl;  // 八进制octonary 使用方法是   <<____<<num    ____里面选择需要转换为八进制的oct ,num为需要被转换的数 
    cout << "35的10进制" << dec << 35 << endl;    //十进制decimalism           <<____<<num    ____里面选择需要转换为十进制的dec ,num为需要被转换的数
    cout << "35的16进制:" << hex << 35 << endl;   //十六进制hexadecimal        <<____<<num    ____里面选择需要转换为十六进制的hex,num为需要被转换的数 
}

此外,C++通过调用bitset函数将十进制数转换为二进制 

#include <iostream>
#include <bitset>
using namespace std;   //任意数转换为2进制1.
                       //定义:bitset< n > s;
                       //表示一个n位的二进制数,<>中填写位数;默认()中的数为十进制  
int main()
{   cout << "35的2进制(显示8位):" << bitset<8>(35) << endl;
    cout << "35的2进制(显示18位):" << bitset<18>(35) << endl;  //在<_>中,__横线上填写转换为二进制后需要显示的位数 ()内写需要被转换成二进制的数 
    cout << "35的2进制(显示3位):" << bitset<3>(35) << endl; //注意:在使用这个函数前需要调用头文件 #include <bitset>
}

 以下函数,_itoa函数能将任意十进制数转换为任意进制的数字

#include <iostream>
#include <algorithm>//需要调用这个头文件 
using namespace std;
int main()
{   

    // 将10进制数转换为任意的n进制数,结果为char型。
    int num = 233;
    char buffer[100]; //例如,将十进制的数字233转换为8进制的数字  351
     _itoa(num, buffer, 8);  //c++中一般用_itoa,用itoa也行,
     cout << buffer;
}

 以下这个函数是能将2至36进制字符串转换为10进制的函数(c++)strtol函数

#include <iostream>
#include <algorithm>//需要调用这个头文件 
using namespace std;   
int main()
{  
 // 
     char buffer[20]="10549stend#12";
    char *stop;
     int ans=strtol(buffer, NULL,8);//第一种写法,前面的buffer数组表示需要转换的字符串,传递数组的首地址
	  //后面的8表示需要将前面的字符串转换成的有效的八进制字符串,再将这个八进制的字符串转换为十进制的字符串,并返回该值 
    // strtol函数会将参数字符串根据参数base来转换成长整型数,参数base范围从2至36。
	 cout << ans << endl ; //这行输出的556是前面字符串识别到的1054(八进制),识别到9超出范围停止识别,
	 //再将已经识别的有效字符串转换为十进制结果是556
	 //中间为什么是NULL请看下面 
     
     //还是同样的数字,不过  NULL-->&stop  ,发生了变化,它的意思是把buffer这个字符串分成两部分,前面一部分有效识别的转换为十进制并返回该值
	 //后面的错误识别部分字符串存储到这个新的位置stop,记住格式,括号里面写&stop 
     int ans1=strtol(buffer, &stop,8);
     cout << ans1 << endl << stop;//此处再输出stop表示的是buffer中无效的字符串 ,ans1表示的是前面已经被识别并转换为十进制的字符串 
     //如果不想返回利用无效的字符串部分,写前面的NULL即可 
     //建议读者模仿学习这个格式 


}

以下文字转载别人的 

long int strtol(const char *nptr, char **endptr, int base)
strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。
参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。
可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为8时,合法字符为‘0’,‘1’,……‘7’;base为10时,合法字符为‘0’,‘1’,……‘9’;base 为16时,合法字符为‘0’,‘1’,……‘9’,‘a’,……‘f’;base为24时,合法字符为‘0’,……‘9’,‘a’,……‘n’,base为36时,合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。
当字符合法时,‘0’,……‘9’依次被转换为十进制的0~9,‘a’,……‘z’一次北转换为十进制的10~35。
strtol()函数检测到第一个非法字符时,立即停止检测,其后的所有字符都会被当作非法字符处理。合法字符串会被转换为long int, 作为函数的返回值。非法字符串,即从第一个非法字符的地址,被赋给*endptr。**endptr是个双重指针,即指针的指针。strtol()函数就是通过它改变*endptr的值,即把第一个非法字符的地址传给endptr。

多数情况下,endptr设置为NULL, 即不返回非法字符串。

建议打开看看这个博主的深入了解学习这个函数

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《strtol()详解》, 一起来围观吧 https://blog.csdn.net/zxx2096/article/details/81127858?utm_source=app&app_version=4.21.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

任意进制的转换(C,C++)itoa函数,strtol函数,bitset函数,oct函数,dec函数,hex函数 的相关文章

  • C++查看 IEEE 754 浮点数格式的代码

    把内容过程中较好的一些内容片段备份一次 下边资料是关于C 查看 IEEE 754 浮点数格式的内容 for binary floating point numbers IEEE 754 is to use a union as shown
  • qt在程序执行的过程中刷新界面

    qt程序执行的过程中 一般是不会仅仅通过setText函数将文字刷新到界面上 如果想根据需要不断地显示文字到主界面上该怎么做呢 为什么不会刷新界面呢 这是由于调用show函数之后 并不能显示界面 必须调用如下图片的中的a exec函数才能刷
  • 一键部署office的工具——OTool

    OTool可用于office的下载 安装和激活 其激活方式是调用kmspico服务器进行的 官方网站是https otp landian vip zh cn 最新版本5 9 3 6在2019 4 16发布 使用方式 下载 这个软件是绿化版的

随机推荐

  • C/C++队列操作

    1 链队结构 typedef struct queuenode int data struct queuenode next Queue typedef struct Queue fronts rear linkqueue 2 入队操作 进
  • 字符设备驱动-通过GPIO子系统提供的API实现LED驱动

    前言 写文章的目的是想通过记录自己的学习过程 以便以后使用到相关的知识点可以回顾和参考 一 GPIO子系统提供的API gpio 子系统提供了 API 函数来操作指定的 GPIO gpio 子系统向驱动开发人员屏蔽了具体的读写寄存器过程 这
  • STM32硬件I2C与软件模拟I2C超详解

    作者简介 嵌入式入坑者 与大家一起加油 希望文章能够帮助各位 个人主页 rivencode的个人主页 系列专栏 玩转STM32 保持学习 保持热爱 认真分享 一起进步 目录 一 I2C协议简介 二 I2C物理层 三 I2C协议层 I2C 基
  • 面试官问:SpringBoot中@Async默认线程池导致OOM如何解决?

    前言 1 最近项目上在测试人员压测过程中发现了OOM问题 项目使用springboot搭建项目工程 通过查看日志中包含信息 unable to create new native thread 内存溢出的三种类型 1 第一种OutOfMem
  • Node.js 学习系列(一) —— 入门

    nodejs 官网 https nodejs org zh cn nodejs下载地址 https nodejs org zh cn download Node js 是一个开源 跨平台的 JavaScript 运行时环境 简单的说 就是运
  • git 环境配置 + gitee拉取代码

    好嘛 配环境的时候 老是忘记这个命令行 干脆自己写一个记录一下 也不用搜了 1 先从git官网下载git 安装 2 然后从gitee拉取代码的时候提示 这是因为换了新电脑没有加入新的公钥啦 哎 所以老是记不住命令行 first git co
  • SSL和SSH有什么区别

    许多人对SSL和SSH感到困惑 这是可以理解的 两者都是安全协议 可以帮助保护从一个端点到另一端点的数据 此外 他们的名字有两个相似的字母 增加了歧义 但是SSH和SSL是两回事 如果您感到困惑 或者对选择哪种安全协议犹豫不决 本文将为您提
  • Rk3288 Android 7.1/8.1默认开启网络ADB端口

    Rk3288 系列开机默认没有打开网络ADB端口 可通过ADB手动改打开 ADB连接后 输入 adb tcpip 5555 Android 默认为5555 输入 adb connect ip地址 可以通过 adb devices 来验证 W
  • NSIS脚本学习:判断版本并安装.NET Framework运行环境

    前言 目前开发的程序以基于 net的应用程序为主 程序开发好后 需要进行安装包的生成 及setup文件的生成 常见的是NSIS工具 之前一直用的单文件打包工具 不适合将运行环境加进去 因此开始使用更高版本的NSIS 3 06 关于判断 NE
  • dva.js yield call/put使用完整流程

    这个项目是基于dva框架的一个rn项目 对于一个新手 其实我也是菜鸟来着 来说 有很好的学习意义 首先我们来看下目录的结构 把我们定义的service引入进来 定义一个GET USER INFO的effects 注意这个函数名称前面要有 然
  • 在 Ubuntu 操作中安装Code::Blocks

    在 Ubuntu 操作 中安装Code Blocks 步骤如下 安装步骤 1 先把编译环境 C库 C 库和Boost库装好 如下 sudoapt get install build essential 有可能安装 build essenti
  • R语言常用包介绍

    r与python差异比较大的一个地方就是 python的机器学习算法集中程度比较高 比如sklearn 就集成了很多的算法 而R语言更多时候需要一个包一个包去了解 比较费时费力 对于python转过来的朋友非常不友好 抽空整理了工作中常用的
  • spark创建maven工程创建scala目录并编译

    背景 我创建spark的maven工程的时候 在java目录同级还创建了一个scala目录 这就得考虑编译相关的事了 解决 1 创建source folder 如下图所示 直接创建就好了 2 编译带来的问题 编译的时候发现一个问题 就是在s
  • WSL安装软件报错/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

    原因 usr lib wsl lib 目录下都是文件而不是链接 且该目录只读 需要在其他目录操作 解决 cd usr lib wsl sudo mkdir lib2 sudo ln s lib lib2 更改wsl配置文件 sudo vim
  • VisualStudio怎么一键注释多行以及一键取消多行注释

    一键注释多行代码 Ctrl k 然后 Ctrl c 一键取消多行注释 Ctrl k 然后 Ctrl u
  • 云主机8088端口被挖矿情况以及解决办法

    1 用top命令查询一下有没有CPU占用很高的 hadoop 10 9 15 140 top top 18 59 17 up 2 05 1 user load average 0 36 0 38 0 68 Tasks 97 total 1
  • Unity视频播放之Video Player的简单使用

    使用Unity自带的VideoPlayer来播放视频 一 准备视频 Unity3D常用视频格式 mov mpg mpeg mp4 avi asf 如果都不识别 试试转换成ogv格式 转换完成之后 将视频素材文件拖入Unity Assets文
  • Nginx中的正则匹配表达式操作符“~”和“~*“的含义

    操作符表示区分大小写的匹配 操作符表示不区分大小写的匹配 更多Nginx中正则表达式操作符的知识 请参考下面这个链接 https www cnblogs com bethal p 5514557 html
  • 二进制方式快速部署BSC主网v1.1.2

    文章目录 一 下载bsc主网快照数据 二 下载BSC二进制文件 三 下载主网配置文件及创世区块文件 四 二进制启动BSC主网 五 查询是否同步完成 BSC快照官方 https docs binance org smart chain dev
  • 任意进制的转换(C,C++)itoa函数,strtol函数,bitset函数,oct函数,dec函数,hex函数

    十进制转换为 2 10 进制代码方法 include