Base64:字串轉換

來源:互聯網
上載者:User
#include<string.h>#define AVal(x) Base64ValTab[x]int EncodeBase64(unsigned char * pInput,int inbufLen, unsigned char * pOutput){const unsigned char Base64ValTab[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";int i = 0;int loop = 0;int remain = 0;int iDstLen = 0;loop = inbufLen/3;remain = inbufLen%3;for (i=0; i < loop; i++){unsigned char a1 = (pInput[i*3] >> 2);unsigned char a2 = ( ((pInput[i*3] & 0x03) << 4) | (pInput[i*3+1] >> 4) );unsigned char a3 = ( ((pInput[i*3+1] & 0x0F) << 2) | ((pInput[i*3+2] & 0xC0) >> 6) );unsigned char a4 = (pInput[i*3+2] & 0x3F);pOutput[i*4] = AVal(a1);pOutput[i*4+1] = AVal(a2);pOutput[i*4+2] = AVal(a3);pOutput[i*4+3] = AVal(a4);}iDstLen = i*4;if (remain == 1){// should pad two equal signi = inbufLen-1;unsigned char a1 = (pInput[i] >> 2);unsigned char a2 = ((pInput[i] & 0x03) << 4);pOutput[iDstLen++] = AVal(a1);pOutput[iDstLen++] = AVal(a2);pOutput[iDstLen++] = '=';pOutput[iDstLen] = '=';}else if (remain == 2){// should pad one equal signi = inbufLen-2;unsigned char a1 = (pInput[i] >> 2);unsigned char a2 = ( ((pInput[i] & 0x03) << 4) | (pInput[i+1] >> 4));unsigned char a3 = ( (pInput[i+1] & 0x0F) << 2);pOutput[iDstLen++] = AVal(a1);pOutput[iDstLen++] = AVal(a2);pOutput[iDstLen++] = AVal(a3);pOutput[iDstLen] = '=';}return iDstLen;}int main(){unsigned char a[30] = "admin:123";char *a_ptr = (char *)a;unsigned char b[30] = {0};EncodeBase64(a,strlen(a_ptr),b);return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.