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

本文地址: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   

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值