八进制转十六进制
2018-06-17 22:29:09来源:未知 阅读 ()
Input
一下T行 每行一个八进制数字串s
Output
Sample Input
7
77
233
2333333333333333333
Sample Output
3F
9B
9B6DB6DB6DB6DB
#include<iostream>
#include<string>
using namespace std;
char x(int n){
if(n<=9)
return n+'0';
switch(n){
case 10:return 'A';
case 11:return 'B';
case 12:return 'C';
case 13:return 'D';
case 14:return 'E';
case 15:return 'F';
}
}
int main(){
int t,i,num,n1,n2,n3,j,k;
string str;
char str1[10000];
cin>>t;
while(t--){
str.clear();
j=0;
cin>>str;
i=str.size()-1;
for(;i>3;i-=4){
num=str[i]-'0'+(str[i-1]-'0')*8+(str[i-2]-'0')*64+(str[i-3]-'0')*512;
n1=0,n2=0,n3=0;
while(num>0){
if(num>=16*16){
num-=16*16;
n1++;
}
else if(num>=16){
num-=16;
n2++;
}
else{
n3=num;
break;
}
}
str1[j++]=x(n3);
str1[j++]=x(n2);
str1[j++]=x(n1);
}
num=0,n1=0,n2=0,n3=0;
for(k=0;k<=i;++k)
num=num*8+str[k]-'0';
while(num>0){
if(num>=16*16){
num-=16*16;
n1++;}
else if(num>=16){
num-=16;
n2++;}
else{
n3=num;
break;}
}
str1[j++]=x(n3);
str1[j++]=x(n2);
str1[j++]=x(n1);
if(n1==0){
j--;
if(n2==0)
j--;
}
while(--j)
cout<<str1[j];
cout<<str1[j]<<endl;
}
return 0;
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 字符集 2020-03-26
- 十六进制转换 2020-02-23
- 以八进制、十进制、十六进制、布尔值形式输出相关数 2020-02-18
- 【蓝桥杯】十六进制转八进制 2020-02-17
- 两个数的差 2019-10-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash