【測試代碼】base64的編碼

   base64編碼原理:

   採用64個基本的ASCII碼字符對數據進行重新編碼,它將需要編碼的數據拆成字節數,以三個爲一族,按照順序排列24位數據,再把這24位數據分成4組,每組6位,再在每組的最高位補2個0湊足一個字節,如所需的編碼數據的字節數不是3的整數,也就是說在分組時最後一組不夠3個字節的,在最後一組填充1-2個0字節,並在最後編碼完成之後在結尾添加1-2個'='

  實現源代碼如下

  1. static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  2. void base64encode(char*out,const unsigned char* in,int len) 
  3.     for(;len >= 3; len -= 3) 
  4.     { 
  5.         *out++ = cb64[in[0]>>2]; 
  6.         *out++ = cb64[((in[0]&0x03)<<4)|(in[1]>>4)]; 
  7.         *out++ = cb64[((in[1]&0x0f)<<2)|((in[2]&0xc0)>>6)]; 
  8.         *out++ = cb64[in[2]&0x3f]; 
  9.         in += 3; 
  10.     } 
  11.     if(len > 0) 
  12.     { 
  13.         unsigned char fragment; 
  14.         fragment = (in[0]&0x03)<<4 ; 
  15.         if(len > 1) 
  16.             fragment |= in[1]>>4; 
  17.         *out++ = cb64[in[0]>>2]; 
  18.         *out++ = cb64[fragment]; 
  19.         *out++ = (len < 2)? '=' : cb64[(in[1]&0x0f)<<2]; 
  20.         *out++ = '='
  21.     } 
  22.     *out = '\0'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章