首页 > 其他分享 >【笔记】进制转换

【笔记】进制转换

时间:2023-02-04 09:33:45浏览次数:36  
标签:10 转换 进制 int namespace 笔记 include cout

代码:

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

int r/*转换为十进制的进制*/, i = 0, ans = 0;
string n;//要转的数
cin >> r >> n;
//1.2~10进制
while(n.size() != i){
    ans *= r;
    ans += n[i];
    i++;
}
cout << ans << endl;
//2~36进制
while(n.size() != i){
    char ch = n[i];
    if(ch >= '0' && ch <= '9') ans = ans * r + (t - '0');
    else ans = ans * r - (t - 'a') + 10;
    i++;
}
cout << ans << endl;

2.十进制转任意2 ~ 36进制

int n, r;
cin >> n >> r;
string ans = "";
do{
    int t = n % r;
    if(t >= 0 && t <= 9) ans += (t + '0');
    else ans += (t - 10 + 'a');
    n /= r;
}while(n != 0);//用do while的原因是防止n直接为0的情况
reverse(ans.begin(), ans.end());
cout << ans << endl;

技巧:

//1.C语言
#define prf printf
prf("%05o\n", 35);//将10进制的35转换成8进制数并输出,留5位,空着的补零
//同理
prf("%03d\n", 35);//10进制
prf("%05x\n", 35);//16进制
//2.C++语言
cout << "35的8进制:" << oct << 35<< endl;//8
cout << "35的10进制" << dec << 35 << endl;//10
cout << "35的16进制:" << hex << 35 << endl;//35

//C++字符串流
//1.将八,十六进制转十进制(string转int)
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
int main(){
    string s = "20";
    int a;
    stringstream ss;
    ss << hex << s;//以16进制读入流中
    ss >> a;//10进制int型输出
    cout << a <<endl;
    return 0;
}
//输出:32
//2.将十进制转八,十六进制(int转string)
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
int main(){
    string s1, s2;
    int a = 30;
    stringstream ss;
    ss << oct << a;
    ss >> s1;
    cout << s1 << endl;//输出:36
    ss.clear();
    ss << hex << a;
    ss >> s2;
    cout << s2 << endl;//输出:1e
    return 0;
}

拓展:

//1.atoi字符数组转数字, itoa不可使用(仅存在于Windows系统,linux系统没有此函数)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	int num = 10;
	char str1[100] = "123456";
	cout << str1 << endl;
	cout << num << endl;
	num = atoi(str1);
	cout << num;
	return 0;
}
/*输出:
123456 
10
123456
*/
//2.用to_string 代替 itoa
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	int num = 10;
	cout << num << endl;
	string s = to_string(num);
	cout << s;
	return 0;
}
/*
输出:
10
10
*/
//3.reverse的用法
reverse(str.begin(),str.end());//1.反转字符串
reverse(vector.begin(),vector.end());//2.反转向
reverse(a,a+strlen(a));//3.反转数组
//同理我们还可以反转很多东西
//例如二维向量,这里最后一列就变成了第一列
reverse(ans.begin(),ans.end());

标签:10,转换,进制,int,namespace,笔记,include,cout
From: https://www.cnblogs.com/Seaniangel/p/17090857.html

相关文章

  • 使用 Docker 搭建思源笔记
    安装思源笔记su-cdmkdirsy-spacechown-R1000:1000/root/sy-spacedockerrun-v/root/sy-space:/siyuan/workspace-p6806:6806-u1000:1000b3log/siyuan......
  • 数学分析笔记【7】 实数完备性
    实数完备性实数完备性由六个等价的命题阐述。它们分别是:确界原理、单调有界定理、区间套定理、有限覆盖定理、聚点定理以及柯西收敛准则。证明它们等价的方法如下图:......
  • Shader入门精要笔记 - CH10_物体表面照出周围环境
     要点1)漫反射和高光发射都是光照到物体表面,然后光反射到人眼2)环境反射是周边环境的画面照到物体表面, 然后环境的画面反射到人眼 贴图漫反射(MainTex)+ 高光......
  • Paraview学习笔记(1)
    前言Paraview是一个开源的,多平台的科学可视化工具以及数据分析程序。本教程基于Paraview5.10版本。Exercise1-CTscanofaboy在第一个练习中,我们将观察一个男孩的......
  • C++ Primer 5th 阅读笔记:前言
    机器效率和编程效率Itsfocus,andthatofitsprogrammingcommunity,haswidenedfromlookingmostlyatmachineefficiencytodevotingmoreattentiontoprogram......
  • Shader入门精要笔记 - CH9_阴影投射,接收阴影
     要点1)阴影投射一般直接引用unity自带的,比如:FallBack"VertexLit"FallBack"Transparent/Cutout/VertexLit"//针对半透明物体的情况里面都包含名叫ShadowCaster......
  • Shader入门精要笔记 - CH7.4_遮罩图在像素级别控制高光强度
    使用了遮罩图后,高光区域我们可以更精细的控制了。不然只能在整体上用Gloss参数调整高光区域 贴图漫反射(MainTex)+高光反射+法线贴图+遮罩图(SpecularMask)Shader"M......
  • 分治法学习笔记
    分治法学习笔记目录分治法学习笔记1,什么是分治法2,什么时候使用分治法3,分治法的解题步骤4,分治法与动态规划的异同5,例题1,什么是分治法字面意思,就是将一个大问题分解为若干......
  • 2022React学习笔记,欢迎批评和指正。
    前言:这是一篇自学笔记,帮助自己的React学习,此学习笔记中只记录教程中对我来说比较又触动的点。观看的视频教程链接如下:001_尚硅谷react教程_react简介_哔哩哔哩_bilibili......
  • 贪心算法学习笔记
    贪心算法学习笔记目录贪心算法学习笔记1,什么是贪心算法2,什么时候使用贪心算法3,贪心算法的解题步骤1,什么是贪心算法贪心算法就是以每次都选局部最优,以期望得出全局最优的......