最近项目中用到要把中文和GBK编码值相互转换,功能是把16进制的GBK编码值转换成字符串输出,把字符串转换成十六进制输出。代码比较简单,在这里做个记录,方便以后查看。
开发环境vs2015,c++
查看字符编码(简体中文)—–GBK内码查询:
http://www.mytju.com/classcode/tools/encode_gb2312.asp
#include<iostream>
#include<string>
#include<vector>
using namespace std;
//获取中文字段的GBK编码值
vector<unsigned char> encode(const string s)
{
string str = s;
vector<unsigned char> buff;
int len = str.length();
buff.resize(len);
memcpy(&buff[0], str.c_str(), len);
return buff;
}
//把GBK编码值解码成中文字段
string decode(vector<unsigned char> buff)
{
vector<unsigned char>debuf = buff;
debuf.resize(buff.size() + 1);
string str = (char *)&debuf[0];
return str;
}
int main() {
//编码
vector<unsigned char>str;
string s = "牧濑红莉栖是我老婆";
str = encode(s);
printf("gbk编码值:");
for (int i = 0; i < str.size(); i++) {
printf("%X ", str[i]);
}
printf("\n");
//解码
string k2 = decode(str);
printf("中文值:");
printf("%s\n", k2.c_str());
system("pause");
return 0;
}
输出结果如下:

本文记录了在VS2015环境下使用C++进行中文与GBK编码值之间的相互转换,包括将16进制GBK编码转为字符串及字符串转为16进制输出的操作。提供了一个方便日后查阅的参考。


被折叠的 条评论
为什么被折叠?



