51 lines
959 B
C++
51 lines
959 B
C++
#include <bits/stdc++.h>
|
||
using namespace std;
|
||
|
||
//将一个16进制的灰阶转为一个整数,方便用来当数组的下标索引值
|
||
int toDec(char a, char b) {
|
||
int res = 0;
|
||
if (a >= 'A' && a <= 'F')
|
||
res += (a - 'A' + 10) * 16;
|
||
else
|
||
res += (a - '0') * 16;
|
||
|
||
if (b >= 'A' && b <= 'F')
|
||
res += b - 'A' + 10;
|
||
else
|
||
res += b - '0';
|
||
|
||
return res;
|
||
}
|
||
|
||
//将一个十进制的灰阶值[0,255]转化成十六进制[0,FF]
|
||
string toHex(int x) {
|
||
int a = x % 16; // 0 ~ 15
|
||
int b = x / 16; //
|
||
char c1;
|
||
if (a >= 10)
|
||
c1 = 'A' + a - 10;
|
||
else
|
||
c1 = '0' + a;
|
||
char c2;
|
||
if (b >= 10)
|
||
c2 = 'A' + b - 10;
|
||
else
|
||
c2 = '0' + b;
|
||
string res;
|
||
res.push_back(c2);
|
||
res.push_back(c1);
|
||
return res;
|
||
}
|
||
|
||
int main() {
|
||
cout << toDec('A', 'B') << endl; //输出:171,手工计算10*16+11=171
|
||
cout << toDec('1', '2') << endl; //18
|
||
cout << toDec('0', '2') << endl; //2
|
||
|
||
cout << toHex(171) << endl;
|
||
cout << toHex(18) << endl;
|
||
cout << toHex(2) << endl;
|
||
|
||
return 0;
|
||
}
|