1. 程式人生 > >C++利用boost實現base64編碼解碼

C++利用boost實現base64編碼解碼

#include <boost/archive/iterators/base64_from_binary.hpp>
#include <boost/archive/iterators/binary_from_base64.hpp>
#include <boost/archive/iterators/transform_width.hpp>

bool Base64Encode(const string& input, string* output) {
	typedef boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<string::const_iterator, 6, 8> > Base64EncodeIterator;
	stringstream result;
	copy(Base64EncodeIterator(input.begin()), Base64EncodeIterator(input.end()), ostream_iterator<char>(result));
	size_t equal_count = (3 - input.length() % 3) % 3;
	for (size_t i = 0; i < equal_count; i++) {
		result.put('=');
	}
	*output = result.str();
	return output->empty() == false;
}

bool Base64Decode(const std::string& input, std::string* output) {
	typedef boost::archive::iterators::transform_width<boost::archive::iterators::binary_from_base64<std::string::const_iterator>, 8, 6> Base64DecodeIterator;
	std::stringstream result;
	try {
		copy(Base64DecodeIterator(input.begin()), Base64DecodeIterator(input.end()), ostream_iterator<char>(result));
	}
	catch (...) {
		return false;
	}
	*output = result.str();
	return output->empty() == false;
}

相關推薦

C++利用boost實現base64編碼解碼

#include <boost/archive/iterators/base64_from_binary.hpp> #include <boost/archive/iterators/binary_from_base64.hpp> #include &

JS實現Base64編碼解碼,帶16進制顯示

ech encode break 復制代碼 bre zab idt pts image 代碼如下: <!DOCTYPE html> <html> <head> <meta name="viewport" conte

c++ 利用boost 實現檔案操作

對資料夾裡面的檔案進行遍歷操作是基本技能之一,python,perl以及bash等指令碼都很好的實現了檔案遍歷方法,對於c/c++來說,只能通過系統自定的api獲取。雖然資料夾操作本身是呼叫作業系統核心的介面,但畢竟介面不夠友好。 boost不愧是準標準庫,f

Libb64:c/c++實現base64編碼解碼庫函式

base64編碼解碼本身也不復雜,但要自己寫,還是得花點時間,如果能找到現成的可靠的程式碼,抄來最好,節省了測試的時間。 libb64就是實現base64編碼解碼的開源庫,還提供了C++封裝,用起來也挺方便 下面是使用libb64 C++封裝介面進行ba

Base64編碼解碼C語言實現

static const char *codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static const unsigned char map[256] = {

.net C實現Base64編碼解碼

一、編碼規則       Base64編碼的思想是是採用64個基本的ASCII碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24 位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足一個位元組。這樣就把一

C實現Base64編碼解碼 自定義

/// <summary> /// Base64編碼類。 /// 將byte[]型別轉換成Base64編碼的string型別。 ///</summary> public class Base64Encoder { byte[] source; int length, length2;

C++實現base64解碼

將昨天的php程式碼改造成C++ /*base_64.h檔案*/ #ifndef BASE_64_H #define BASE_64_H /** * Base64 編碼/解碼 * @author liruixing */ class Base64{ private: std

用python實現base64編碼解碼

用到了python裡的base64模組 用法: 編碼: 1 import base64 2 a = 'HC'.decode() #將‘HC’轉為二進位制 3 b = base64.b64encode(a) #將a轉為base64編碼 4 b.decode() #從二進位制轉回 5 6 base6

boost實現Base64解碼

  Base64介紹 Base64是一種基於64個可列印字元來表示二進位制資料的表示方法,從本質上看Base64編碼就是將三位元組轉換為四位元組,如果資料的長度不是3的整數倍,就要在後面補0再計算,每補2個0就再Base64串後加上1個‘=’。 boost庫Base64

JAVA實現Base64編碼的三種方式

ack ons static nts bstr clas [] ram trace 摘要: Javabase64編碼的三種方式 有如下三種方式: 方式一:commons-codec.jar Java代碼 1. String base64String="whuang12

用javascript實現base64編碼

應用 ges 標準 asd 富文本 隨著 不同 none fail 前面的話   base-64作為常見的編碼函數,在基本認證、摘要認證以及一些HTTP擴展中得到了大量應用。在前端領域,也常常把圖片轉換為base-64編碼在網絡中傳輸。本文將詳細介紹base64的原理及用j

linux下進行base64編碼解碼

image 分享 clas 技術分享 post blog div img 技術 1.編碼 2.解碼 linux下進行base64編碼解碼

C#利用Guid實現真隨機數

循環 有效 不為 唯一標識 生成 算法 bsp 目錄 系統目錄 C#中的隨機數可以利用Random類很簡單地生成隨機數,代碼如下: Random rdmNum=new Random();//生成隨機數對象 int ans=rdmNum.Next(a,b);//生成大於大於

自己用 python 實現 base64 編碼

自己用 python 實現 base64 編碼 base64 編碼原理 二進位制檔案中包含有很多無法顯示和列印的字元,二進位制的資料一般以 ASCII 碼形式(8 bit,即一個位元組)儲存,8 bit 可以表示 128 個不同的編碼,而 ASCII 碼中有 33 個編碼表示的不是顯示或列印的字元:

Java實現Base64解碼

為什麼要用Base64編碼 在網路中傳輸資料都是使用ascii方式傳輸。對於一些圖片、視訊等資料,可能就會被編碼成ascii中不可見部分的編碼。網路中不同的路由裝置處理方式不同,有可能就會把這部分資料弄丟了。為了保證資料傳輸的正確性,可以使用Base64編碼將這些不可見資料編碼成可見資料。 Java實現B

Java Base64 編碼解碼方案總結

缺點 system 類別 字串 轉換 一點 text encoder bin Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個Binary資料和字串資料彼此之間是可以互相轉換的,十分方便。在實際應用上,Base64除了能將Binary資料可視化

C#利用Dapper實現對SQLite的操作

前言 近幾天藉助C#對SQLite的學習,算是對資料庫剛入門吧,三天前寫了一篇C#利用System.Data.SQLite實現對SQLite的操作,其中方法是基於System.Data.SQLite.dll的程式包,後來在youtube和infoworld上看到利用Dapper程式包對資

java 按位元組讀寫二進位制檔案(Base64編碼解碼

最近在做專案時遇到這樣一個需求:依次讀取本地資料夾裡所有檔案的內容,轉為JSON,傳送到ActiveMQ的訊息佇列, 然後從MQ的訊息佇列上獲取檔案的資訊,依次寫到本地。常見的檔案型別,比如.txt 和.png等檔案的讀寫並不難。但是,我剛才所提到的需求,如果用常規的方法去讀寫,比如按位元組讀取檔案內容

java 按字節讀寫二進制文件(Base64編碼解碼

h+ lee bean 字節數組 inpu 讀取 write bytearray 轉換工具類 最近在做項目時遇到這樣一個需求:依次讀取本地文件夾裏所有文件的內容,轉為JSON,發送到ActiveMQ的消息隊列, 然後從MQ的消息隊列上獲取文件的信息,依次寫到本地。常見的文