本文地址:http://blog.csdn.net/morewindows/article/details/11922643转载请标明出处,谢谢。
欢迎关注微博:http://weibo.com/MoreWindows
本系列一共四篇:
1. 《Base64系列第一篇 Base64介绍》
2. 《Base64系列第二篇 python中使用Base64编码解码》
3. 《Base64系列第三篇 C/C++中使用Base64编码解码(使用boost库)》
4. 《Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)》
本篇《Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)》将从大名鼎鼎的chromium库抽取代码,保证健壮高效的完成Base64编码解码。
核心代码展示(完整代码下载地址(免积分):http://download.csdn.net/download/morewindows/6423847)
base64.h
#include "./modp_base64/modp_b64.h"
// Encodes the input string in base64. Returns true if successful and false
// otherwise. The output string is only modified if successful.
bool Base64Encode(const std::string& input, std::string* output);
// Decodes the base64 input string. Returns true if successful and false
// otherwise. The output string is only modified if successful.
bool Base64Decode(const std::string& input, std::string* output);
base64.cpp
#include "./base64.h"
#include <string.h>
bool Base64Encode(const std::string& input, std::string* output) {
std::string temp;
temp.resize(modp_b64_encode_len(input.size())); // makes room for null byte
// null terminates result since result is base64 text!
int input_size = static_cast<int>(input.size());
int output_size= modp_b64_encode(&(temp[0]), input.data(), input_size);
if (output_size < 0)
return false;
temp.resize(output_size); // strips off null byte
output->swap(temp);
return true;
}
bool Base64Decode(const std::string& input, std::string* output) {
std::string temp;
temp.resize(modp_b64_decode_len(input.size()));
// does not null terminate result since result is binary data!
int input_size = static_cast<int>(input.size());
int output_size = modp_b64_decode(&(temp[0]), input.data(), input_size);
if (output_size < 0)
return false;
temp.resize(output_size);
output->swap(temp);
return true;
}
测试代码:
// Base64系列第四篇C/C++中使用Base64编码解码(从chromium库中抽取)
// by MoreWindows( http://blog.csdn.net/MoreWindows )
// 欢迎关注http://weibo.com/morewindows
#include "./base64.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout<<" Base64系列第四篇C/C++中使用Base64编码解码(从chromium库中抽取)"<<endl;
cout<<" -- by MoreWindows( http://blog.csdn.net/MoreWindows ) --"<<endl;
cout<<" - http://blog.csdn.net/morewindows/article/details/11922519 -\n"<<endl;
string input_str("MoreWindows - http://blog.csdn.net/morewindows?viewmode=contents ~!@#$%\r\n\t0123456789");
string base64_str, output_str;
cout<<"origin text: \n"<<input_str<<endl;
Base64Encode(input_str, &base64_str);
cout<<"encode: \n"<<base64_str<<endl;
Base64Decode(base64_str, &output_str);
cout<<"decode: \n"<<output_str<<endl;
return 0;
}
运行结果如下:
Base64编码解码系列就到此结束了,相信大家不但能从原理上理解,还能以python,C/C++来实现^_^。
本文地址:http://blog.csdn.net/morewindows/article/details/11922643转载请标明出处,谢谢。
欢迎关注微博:http://weibo.com/MoreWindows