怎么用C++把汉字转换为数字

2020-05-08 社会 74阅读
#include
#include
#include
using namespace std;
int main()
{
typedef unsigned short us;
typedef unsigned char uc;
uc x[] = "中国";

// 转化为数字
us a[5];
copy(x, x + sizeof x, a);

// 打印
cout.setf(ios_base::hex, ios_base::basefield);
copy(a, a + sizeof a/sizeof a[0], ostream_iterator(cout, " "));
cout.setf(ios_base::dec, ios_base::basefield);

// 转化为字符
uc b[sizeof x];
copy(a, a + sizeof a/sizeof a[0], b);
cout << endl << "b: " << b;

// 用数字测试
uc g[] = {0xD6, 0xD0, 0xB9, 0xFA, 0x0};
cout << endl << "g: " << g;
}
那我改哈:
#include
#include
using namespace std;
typedef unsigned short us, *pus;
typedef unsigned char uc;
void FmtHexPrint(pus beg, pus end)
{
for(int i = 0; beg != end; ++beg)
{
cout << "0x" << hex << uppercase;
cout.width(2);
cout.fill('0');
cout << *beg << ", ";
i = ++i ^ 10 ? i : 0;
if(i == 0)
cout << '\n';
}
cout << "0x0";
}
int main()
{
uc ch[] =
"\
关 关 雎 鸠, 在 河 之 洲。\n\
窈 窕 淑 女, 君 子 好 逑。\n\n\
参 差 荇 菜, 左 右 流 之。\n\
窈 窕 淑 女, 寤 寐 求 之。\n\n\
求 之 不 得, 寤 寐 思 服。\n\
悠 哉 悠 哉, 辗 转 反 侧。\n\n\
参 差 荇 菜, 左 右 采 之。\n\
窈 窕 淑 女, 琴 瑟 友 之。\n\n\
参 差 荇 菜, 左 右 芼 之。\n\
窈 窕 淑 女, 钟 鼓 乐 之。\n\n\
";
// 转化为数字
us num[sizeof ch];
copy(ch, ch + sizeof ch, num);
// 打印
cout << "num:\n\n";
FmtHexPrint(num, num + sizeof num/sizeof num[0]);
// 转化为字符
uc toCh[sizeof ch];
copy(num, num + sizeof num/sizeof num[0], toCh);
cout << "\n\ntoCh:\n\n" << toCh << endl;
// 用数字测试
uc numTest[] =
{
0xB9, 0xD8, 0x20, 0xB9, 0xD8, 0x20, 0xF6, 0xC2, 0x20, 0xF0,
0xAF, 0xA3, 0xAC, 0x20, 0xD4, 0xDA, 0x20, 0xBA, 0xD3, 0x20,
0xD6, 0xAE, 0x20, 0xD6, 0xDE, 0xA1, 0xA3, 0x0A, 0xF1, 0xBA,
0x20, 0xF1, 0xBB, 0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE, 0xA3,
0xAC, 0x20, 0xBE, 0xFD, 0x20, 0xD7, 0xD3, 0x20, 0xBA, 0xC3,
0x20, 0xE5, 0xCF, 0xA1, 0xA3, 0x0A, 0x0A, 0xB2, 0xCE, 0x20,
0xB2, 0xEE, 0x20, 0xDC, 0xF4, 0x20, 0xB2, 0xCB, 0xA3, 0xAC,
0x20, 0xD7, 0xF3, 0x20, 0xD3, 0xD2, 0x20, 0xC1, 0xF7, 0x20,
0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0xF1, 0xBA, 0x20, 0xF1, 0xBB,
0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE, 0xA3, 0xAC, 0x20, 0xE5,
0xBB, 0x20, 0xC3, 0xC2, 0x20, 0xC7, 0xF3, 0x20, 0xD6, 0xAE,
0xA1, 0xA3, 0x0A, 0x0A, 0xC7, 0xF3, 0x20, 0xD6, 0xAE, 0x20,
0xB2, 0xBB, 0x20, 0xB5, 0xC3, 0xA3, 0xAC, 0x20, 0xE5, 0xBB,
0x20, 0xC3, 0xC2, 0x20, 0xCB, 0xBC, 0x20, 0xB7, 0xFE, 0xA1,
0xA3, 0x0A, 0xD3, 0xC6, 0x20, 0xD4, 0xD5, 0x20, 0xD3, 0xC6,
0x20, 0xD4, 0xD5, 0xA3, 0xAC, 0x20, 0xD5, 0xB7, 0x20, 0xD7,
0xAA, 0x20, 0xB7, 0xB4, 0x20, 0xB2, 0xE0, 0xA1, 0xA3, 0x0A,
0x0A, 0xB2, 0xCE, 0x20, 0xB2, 0xEE, 0x20, 0xDC, 0xF4, 0x20,
0xB2, 0xCB, 0xA3, 0xAC, 0x20, 0xD7, 0xF3, 0x20, 0xD3, 0xD2,
0x20, 0xB2, 0xC9, 0x20, 0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0xF1,
0xBA, 0x20, 0xF1, 0xBB, 0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE,
0xA3, 0xAC, 0x20, 0xC7, 0xD9, 0x20, 0xC9, 0xAA, 0x20, 0xD3,
0xD1, 0x20, 0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0x0A, 0xB2, 0xCE,
0x20, 0xB2, 0xEE, 0x20, 0xDC, 0xF4, 0x20, 0xB2, 0xCB, 0xA3,
0xAC, 0x20, 0xD7, 0xF3, 0x20, 0xD3, 0xD2, 0x20, 0xC6, 0x64,
0x20, 0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0xF1, 0xBA, 0x20, 0xF1,
0xBB, 0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE, 0xA3, 0xAC, 0x20,
0xD6, 0xD3, 0x20, 0xB9, 0xC4, 0x20, 0xC0, 0xD6, 0x20, 0xD6,
0xAE, 0xA1, 0xA3, 0x0A, 0x0A, 0x0
};
cout << "numTest:\n\n" << numTest << endl;
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com