Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)

本系列一共四篇:

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

[cpp] view plain copy
  1. #include "./modp_base64/modp_b64.h"  
  2.   
  3. // Encodes the input string in base64.  Returns true if successful and false  
  4. // otherwise.  The output string is only modified if successful.  
  5. bool Base64Encode(const std::string& input, std::string* output);  
  6.   
  7. // Decodes the base64 input string.  Returns true if successful and false  
  8. // otherwise.  The output string is only modified if successful.  
  9. bool Base64Decode(const std::string& input, std::string* output);  

base64.cpp

[cpp] view plain copy
  1. #include "./base64.h"  
  2. #include <string.h>  
  3.   
  4. bool Base64Encode(const std::string& input, std::string* output) {  
  5.   std::string temp;  
  6.   temp.resize(modp_b64_encode_len(input.size()));  // makes room for null byte  
  7.   
  8.   // null terminates result since result is base64 text!  
  9.   int input_size = static_cast<int>(input.size());  
  10.   int output_size= modp_b64_encode(&(temp[0]), input.data(), input_size);  
  11.   if (output_size < 0)  
  12.     return false;  
  13.   
  14.   temp.resize(output_size);  // strips off null byte  
  15.   output->swap(temp);  
  16.   return true;  
  17. }  
  18.   
  19. bool Base64Decode(const std::string& input, std::string* output) {  
  20.   std::string temp;  
  21.   temp.resize(modp_b64_decode_len(input.size()));  
  22.   
  23.   // does not null terminate result since result is binary data!  
  24.   int input_size = static_cast<int>(input.size());  
  25.   int output_size = modp_b64_decode(&(temp[0]), input.data(), input_size);  
  26.   if (output_size < 0)  
  27.     return false;  
  28.   
  29.   temp.resize(output_size);  
  30.   output->swap(temp);  
  31.   return true;  
  32. }  

测试代码:

[cpp] view plain copy
  1. //  Base64系列第四篇C/C++中使用Base64编码解码(从chromium库中抽取)  
  2. //  by MoreWindows( http://blog.csdn.net/MoreWindows )     
  3. //  欢迎关注http://weibo.com/morewindows    
  4. #include "./base64.h"  
  5. #include <iostream>  
  6. #include <string>  
  7. using namespace std;  
  8. int main()  
  9. {  
  10.   cout<<"    Base64系列第四篇C/C++中使用Base64编码解码(从chromium库中抽取)"<<endl;  
  11.   cout<<"  -- by MoreWindows( http://blog.csdn.net/MoreWindows ) --"<<endl;  
  12.   cout<<" - http://blog.csdn.net/morewindows/article/details/11922519 -\n"<<endl;  
  13.   
  14.   string input_str("MoreWindows - http://blog.csdn.net/morewindows?viewmode=contents ~!@#$%\r\n\t0123456789");  
  15.   string base64_str, output_str;  
  16.   
  17.   cout<<"origin text: \n"<<input_str<<endl;  
  18.   
  19.   Base64Encode(input_str, &base64_str);  
  20.   cout<<"encode: \n"<<base64_str<<endl;  
  21.   
  22.   Base64Decode(base64_str, &output_str);  
  23.   cout<<"decode: \n"<<output_str<<endl;  
  24.   return 0;  
  25. }  

运行结果如下:

 Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)_第1张图片

Base64编码解码系列就到此结束了,相信大家不但能从原理上理解,还能以python,C/C++来实现^_^。

本文地址:http://blog.csdn.net/morewindows/article/details/11922643转载请标明出处,谢谢。

欢迎关注微博:http://weibo.com/MoreWindows 

你可能感兴趣的:(base64)