如题所述
#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdlib>
using namespace std;
// åå§åå·¥ä½ , initialize
// å®ä¹æ¥è¯¢è¡¨ ï¼ = æ¯ä¸ºäºåç ä¸å¤åé èå ä¸çã
char sz64Table[65] = {'A','B','C','D','E',
'F','G','H','I','J',
'K','L','M','N','O',
'P','Q','R','S','T',
'U','V','W','X','Y',
'Z','a','b','c','d',
'e','f','g','h','i',
'j','k','l','m','n',
'o','p','q','r','s',
't','u','v','w','x',
'y','z','0','1','2',
'3','4','5','6','7',
'8','9','+','/','='
} ;
// å®ä¹ åæ¢å½æ°ã
void Encode64 (string strGetStr) // 转æ¢
{
// å¤æå ¶é¿åº¦æ¯å¦ç¬¦åè¦æ±
int nNumberOfGetStr = 0 ; // 串çé¿åº¦
int nNeedByte ; // éè¦è¡¥å çåèæ°
int nGroup ; // åç»æ°
nNumberOfGetStr = strGetStr.length ();
if ( nNumberOfGetStr == 0 )
{
cout << "è¾å ¥ä¸²ä¸ºç©ºï¼"<< endl;
exit ( 1 ) ;
}
else // é¿åº¦ä¸ä¸ºç©ºï¼è¦å¤ææ°éæ¯å¦éè¦è¡¥å
{
nGroup = nNumberOfGetStr / 3 ; // è¿éæ¯åç»æ°çåæ¥å¼
nNeedByte = nNumberOfGetStr % 3 ; // è¿éæ¯ä¸ä¸ªæ¨¡ï¼ç¨çæ¶åè¿å¾æ³¨æã
if ( nNeedByte == 1 ) // 模1 说æéè¦ä¸¤ä¸ª
{
nGroup ++ ;
strGetStr.append ("00") ;
}
if ( nNeedByte == 2 ) // 模2说æéè¦ä¸ä¸ªè¡¥0
{
nGroup ++ ;
strGetStr.append ("0") ;
}
} // if
// å¼å§åç» , ä¹å°±æ¯å¯¹æ¯ä¸ç»é½è¿è¡åæ¢ã
char szTemp[3] ; // ä¸é´è¿æ¸¡
// char * p = new char( nGroup * 4 ); // å 为转æ¢å容éæ¯åæ¥ç4/3
char p[300] ;
for ( int i = 0 ; i < nGroup ; i ++ )
{
szTemp[0] = strGetStr.at ( i * 3 + 0) ;
szTemp[1] = strGetStr.at ( i * 3 + 1) ;
szTemp[2] = strGetStr.at ( i * 3 + 2) ;
//第ä¸ä¸ªè¾åºåèï¼å第ä¸è¾å ¥åèçå6ä½ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
p[i * 4 + 0] = szTemp[0] >> 2 ;
//第äºä¸ªè¾åºåèï¼å第ä¸è¾å ¥åèçå2ä½å第äºä¸ªè¾å ¥åèçå4ä½ï¼å ±6ä½ï¼ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
p[i * 4 + 1] = ((szTemp[0] & 0x03) << 4) ^ (szTemp[1] >> 4) ;
//第ä¸ä¸ªè¾åºåèï¼å第äºè¾å ¥åèçå4ä½å第ä¸ä¸ªè¾å ¥åèçå2ä½ï¼å ±6ä½ï¼ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
if ( szTemp[1] == 48) p[i * 4 + 2] = 64 ; // 48 ä¹å°±æ¯ 0 çASCII
else p[i * 4 + 2] = ((szTemp[1] & 0x0f) << 2) ^ (szTemp[2] >> 6) ;
//第å个è¾åºåèï¼å第ä¸è¾å ¥åèçå6ä½ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
if ( szTemp[2] == 48) p[i * 4 + 3] = 64 ;
else p[i * 4 + 3] = szTemp[2] & 0x3f ;
}
for (int j = 0 ; j < nGroup * 4 ; j ++)
{
cout << sz64Table[ p[j] ] ;
}
cout << endl;
}// Encode is over ;
æ¨å¤©ççä¸ä¸ªC#代ç æ¹åçï¼å¯è½æäºè¯æ³è¯ä¹çä¸æ£ç¡®ï¼å¤§å®¶è§è° ãæ°´å¹³å®å¨æ¯ä¸è¡ï¼ä½æåäºä¹ååç°å¦ææ¯å¯¹ä¸ä¸ªå符è¿è¡ç¼ç çè¯ï¼ä¼åºç°é®é¢ã
è·å ¶ä»ç¨åºæ¯èµ·æ¥ï¼å·®äº3个ä½ç½®ãæ¯å¦ï¼ 1 ç¼ä¸º ï¼MQ== ï¼ æçç¼ä¸ºï¼ MT== ãå符å¤äºå°±æ²¡é®é¢ãèªå·±æ²¡æ³æç½ï¼è°ç»å®¡å®¡ï¼
#include <cmath>
#include <cstring>
#include <cstdlib>
using namespace std;
// åå§åå·¥ä½ , initialize
// å®ä¹æ¥è¯¢è¡¨ ï¼ = æ¯ä¸ºäºåç ä¸å¤åé èå ä¸çã
char sz64Table[65] = {'A','B','C','D','E',
'F','G','H','I','J',
'K','L','M','N','O',
'P','Q','R','S','T',
'U','V','W','X','Y',
'Z','a','b','c','d',
'e','f','g','h','i',
'j','k','l','m','n',
'o','p','q','r','s',
't','u','v','w','x',
'y','z','0','1','2',
'3','4','5','6','7',
'8','9','+','/','='
} ;
// å®ä¹ åæ¢å½æ°ã
void Encode64 (string strGetStr) // 转æ¢
{
// å¤æå ¶é¿åº¦æ¯å¦ç¬¦åè¦æ±
int nNumberOfGetStr = 0 ; // 串çé¿åº¦
int nNeedByte ; // éè¦è¡¥å çåèæ°
int nGroup ; // åç»æ°
nNumberOfGetStr = strGetStr.length ();
if ( nNumberOfGetStr == 0 )
{
cout << "è¾å ¥ä¸²ä¸ºç©ºï¼"<< endl;
exit ( 1 ) ;
}
else // é¿åº¦ä¸ä¸ºç©ºï¼è¦å¤ææ°éæ¯å¦éè¦è¡¥å
{
nGroup = nNumberOfGetStr / 3 ; // è¿éæ¯åç»æ°çåæ¥å¼
nNeedByte = nNumberOfGetStr % 3 ; // è¿éæ¯ä¸ä¸ªæ¨¡ï¼ç¨çæ¶åè¿å¾æ³¨æã
if ( nNeedByte == 1 ) // 模1 说æéè¦ä¸¤ä¸ª
{
nGroup ++ ;
strGetStr.append ("00") ;
}
if ( nNeedByte == 2 ) // 模2说æéè¦ä¸ä¸ªè¡¥0
{
nGroup ++ ;
strGetStr.append ("0") ;
}
} // if
// å¼å§åç» , ä¹å°±æ¯å¯¹æ¯ä¸ç»é½è¿è¡åæ¢ã
char szTemp[3] ; // ä¸é´è¿æ¸¡
// char * p = new char( nGroup * 4 ); // å 为转æ¢å容éæ¯åæ¥ç4/3
char p[300] ;
for ( int i = 0 ; i < nGroup ; i ++ )
{
szTemp[0] = strGetStr.at ( i * 3 + 0) ;
szTemp[1] = strGetStr.at ( i * 3 + 1) ;
szTemp[2] = strGetStr.at ( i * 3 + 2) ;
//第ä¸ä¸ªè¾åºåèï¼å第ä¸è¾å ¥åèçå6ä½ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
p[i * 4 + 0] = szTemp[0] >> 2 ;
//第äºä¸ªè¾åºåèï¼å第ä¸è¾å ¥åèçå2ä½å第äºä¸ªè¾å ¥åèçå4ä½ï¼å ±6ä½ï¼ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
p[i * 4 + 1] = ((szTemp[0] & 0x03) << 4) ^ (szTemp[1] >> 4) ;
//第ä¸ä¸ªè¾åºåèï¼å第äºè¾å ¥åèçå4ä½å第ä¸ä¸ªè¾å ¥åèçå2ä½ï¼å ±6ä½ï¼ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
if ( szTemp[1] == 48) p[i * 4 + 2] = 64 ; // 48 ä¹å°±æ¯ 0 çASCII
else p[i * 4 + 2] = ((szTemp[1] & 0x0f) << 2) ^ (szTemp[2] >> 6) ;
//第å个è¾åºåèï¼å第ä¸è¾å ¥åèçå6ä½ï¼å¹¶ä¸å¨é«ä½è¡¥0ï¼ä½¿å ¶åæ8ä½ï¼ä¸ä¸ªåèï¼
if ( szTemp[2] == 48) p[i * 4 + 3] = 64 ;
else p[i * 4 + 3] = szTemp[2] & 0x3f ;
}
for (int j = 0 ; j < nGroup * 4 ; j ++)
{
cout << sz64Table[ p[j] ] ;
}
cout << endl;
}// Encode is over ;
æ¨å¤©ççä¸ä¸ªC#代ç æ¹åçï¼å¯è½æäºè¯æ³è¯ä¹çä¸æ£ç¡®ï¼å¤§å®¶è§è° ãæ°´å¹³å®å¨æ¯ä¸è¡ï¼ä½æåäºä¹ååç°å¦ææ¯å¯¹ä¸ä¸ªå符è¿è¡ç¼ç çè¯ï¼ä¼åºç°é®é¢ã
è·å ¶ä»ç¨åºæ¯èµ·æ¥ï¼å·®äº3个ä½ç½®ãæ¯å¦ï¼ 1 ç¼ä¸º ï¼MQ== ï¼ æçç¼ä¸ºï¼ MT== ãå符å¤äºå°±æ²¡é®é¢ãèªå·±æ²¡æ³æç½ï¼è°ç»å®¡å®¡ï¼
温馨提示:答案为网友推荐,仅供参考