文章

2

粉丝

0

获赞

2

访问

249

头像
进制转换2(16转10)
备考笔记
发布于2025年2月19日 18:25
阅读数 146

解答:

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	while(cin >> s){ //注意题目中的一个测试用例中的可能存在多种数据,用
					 //while(cin >> s)或while(scanf("%s",s) != EOF)(char类型的数组)进行循环输入即可
		int end = 0;
		for(int i = 2; i < s.size(); i++){
			end *= 16;//类似于1A = 1*16^1 + A*16^0;二进制同样如此(1000 = 8 = 1*2^3 + 0*2^2 + 0*2^1 + 0*2^0),
			          //记住公式即可。A转B则需要每次承A的权值。
			char j = s[i];
			if(j <= '9' && j >= '0') end = end + (j - '0');//注意ASCII码值的转换
			else if(j >= 'A' && j <= 'F') end = end + (j - 'A') + 10;//一定要注意加10
			else end = end + (j - 'a') + 10;
		}
		cout << end << endl;
	}
	return 0;
}

关于string类型的扩展

1.头文件

#include<string>

2.string类型的变量可以像char类型的数组一样进行下标的访问,也可以用“+”进行拼接。

string str = "Hello";

// 使用下标访问字符
char ch1 = str[0]; // 'H'
char ch2 = str.at(1); // 'e' (推荐使用at(),因为它会检查边界)

// 修改字符
str[0] = 'h'; // 字符串变为 "hello"
cout << str << en...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发