1.在C中,按指定进制格式输出如下:
#include
#include
using namespace std;
int main()
{
printf(“%o\n”,35); // 八进制格式输出:%o
printf(“%d\n”,35); // 十进制格式输出:%d
printf(“%x”,35); // 十六进格式制输出:%x或者%X
return 0;
}
// 输出结果:
43
35
23
2.在C++中,按指定进制格式输出如下:
#include
using namespace std;
int main()
{
cout<<oct<<35<<endl; // 八进制输出格式 oct
cout<<dec<<35<<endl; // 十进制输出格式 dec
cout<<hex<<35<<endl; // 十六进制输出格式 hex
return 0;
}
// 输出:
43
35
23
3.任意2-36进制数转化为10进制数
- 自己写一个函数
建议自己可以去敲一敲,加深记忆
#include
using namespace std;
int turn (string a,int t)
{
int sum=0;
for(int i=a.size()-1;i>=0;i–)
{
if(a[i]>=‘0’&&a[i]<=‘9’)
sum=sum*t+a[i]-‘0’;
else
{
sum=sum*t+a[i]-‘A’+10;
}
}
return sum;
}
int main()
{
string a;
int num,t;
while(cin>>a) // 超过10进制我们以大写字母表示
{
cin>>t; // t代表要转换的进制数
num=turn(a,t);
cout<<num<<endl;
}
return 0;
}
2.strtol函数
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, 即不返回非法字符串。
#include
#include
using namespace std;
int main()
{
char r[100];
int t;
while(~scanf(“%s”,r))
{
cin>>t; // t代表他原来的进制数
cout<<strtol(r,NULL,t)<<endl;
memset(r,‘\0’,sizeof®);
}
return 0;
}
// C++11 特性!!!
注意:
①如果base为0,且字符串不是以0x(或者0X)开头,则按十进制进行转化。
②如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。
③如果base不等于0和16,并且字符串以0x(或者0X)开头,那么x被视为非法字符。
④对于nptr指向的字符串,其开头和结尾处的空格被忽视,字符串中间的空格被视为非法字符。
4.将10进制数转换为任意的n进制数
- 建议自己写一个代码:
#include
#include
#include
using namespace std;
stack s;
void turn (int t,int tmp)
{
while(t!=0)
{
if(t%tmp<=10)
s.push(t%tmp+‘0’);
else
s.push(t%tmp-10+‘A’);
t/=tmp;
}
}
int main()
{
int t,tmp;
while(cin>>t>>tmp)
{
turn(t,tmp);
while(!s.empty())
{
cout<<s.top();
s.pop();
}
cout<<endl;
}
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
4119)]
[外链图片转存中…(img-aH6JhiOu-1715556664121)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!