写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
1、#include <iostream>
using namespace std;
int main()
{
int a;
while(cin>>hex>>a){
cout<<a<<endl;
}
}//cin >> hex >> a 将输入的十进制数转化为十六进制 cin >> oct>> a将输入的十进制数转化为八进制
2、sprintf用于格式化字符串
可以方便地得到变量的十六进制和八进制字符序列,再稍加处理即可得到每一位的值。
char c[100];
int k=255;
sprintf(c,"%x",k)
//c包含"ff" c[0]='f' c[1]='f'
3
#include<stdio.h>
#include<string.h>
#include<math.h>
int
main()
{
char
str[100];
int
i=0,count,sum;
while
(
gets
(str))
//用于多次输入
{
count=
strlen
(str);
//计算字符串的长度
sum=0;
for
(i=count-1;i>=0;i--)
//从十六进制个位开始,每位都转换成十进制
{
if
(str[i]>=
'0'
&&str[i]<=
'9'
)
//数字字符的转换
{
sum+=(str[i]-48)*
pow
(16,count-i-1);
}
else
if
(str[i]>=
'A'
&&str[i]<=
'F'
)
//字母字符的转换
{
sum+=(str[i]-55)*
pow
(16,count-i-1);
}
else if (s[i]>='a'&&s[i] <= 'f')
sum += (s[i] - 87)*pow(16, len - i - 1);
}
printf
(
"%d\n"
,sum);
}
return
0;
}
void binary(int n) //十进制和二进制之间的转化
{
stack<int>v;
while (n)
{
v.push(n%2);
n = n / 2;
}
while (!v.empty())
{
cout << v.top() << endl;
v.pop();
}
}