帮忙转换成C#,谢谢!!

mzwww mzwww 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
帮忙转换成C#,谢谢!!
void CClientRegicode::EncodeBase64MSG(char *Src,int Src_len,char *base64code)
{
int len,i,work_Len;
unsigned char* psrc ;
unsigned char Beign;
unsigned char rest ;
const char szBase64TableOld2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; //$ 标准
const char szBase64TableOld [] = {'P','Q','R','S','T','U','a','b','c','d','e','f','g','h','A','B','C','D','E','K','L','M','y','z',
'0','1','N','O','V','W','X','Y','Z','i','j','k','q','r','s','5','6','7','8','9','t','u','v','w',
'x','2','3','4','+','/','F','G','H','I','J','l','m','n','o','p'}; //- * 变化
char szBase64Table [] = {'P','Q','R','S','T','U','a','b','c','d','e','f','g','h','A','B','C','D','E','K','L','M','y','z',
'0','1','N','O','V','W','X','Y','Z','i','j','k','q','r','s','5','6','7','8','9','t','u','v','w',
'x','2','3','4','+','/','F','G','H','I','J','l','m','n','o','p'}; //- * 变化
work_Len = Src_len;

if (Src[4]=='-'||Src[4]=='*'||Src[4]=='$')
{
psrc = (unsigned char*)&Src[5]; work_Len=work_Len-5;
*base64code=Src[0];base64code++;
*base64code=Src[1];base64code++;
*base64code=Src[2];base64code++;
*base64code=Src[3];base64code++;
*base64code=Src[4];base64code++;
i=atoi(Src) % 63;
if (i!=0)
{
if (Src[4]=='$')
{
memcpy(szBase64Table ,&szBase64TableOld2[i],64-i);
memcpy(&szBase64Table[64-i],szBase64TableOld2 ,i);
}
else
{
memcpy(szBase64Table ,&szBase64TableOld[i],64-i);
memcpy(&szBase64Table[64-i],szBase64TableOld ,i);
}
}
if (Src[4]=='*')
{
char buf[3];buf[2]=0;
len =1;*psrc++;
for (i = 1; i < work_Len ; i=i+2)
{
memcpy(buf,&Src[5+i],2);
*psrc=(unsigned char) (strtoul(buf,NULL,16));
*psrc++;
len++;
}
psrc = (unsigned char*)&Src[5];
work_Len=len;
}
}
else
psrc = (unsigned char*)Src;

rest=0;
Beign=0;
len = 0;
for (i = 0; i < work_Len ; i ++)
{
do
{
*base64code=szBase64Table[ ( Beign<<(6-rest) | *psrc>>(2+rest))&0x3f];
base64code++;
len++;
Beign=*psrc;
rest+=2;
if (rest==8)
{
rest=0;

}
} while (rest>=6);
psrc++;
}
if (rest!=0)
{
*base64code=szBase64Table[ ( Beign<<(6-rest) )&0x3f];
base64code++;
len++;
}
if (((len/4)*4)!=len)
for (i=0;i<((len/4)+1)*4-len;i++)
{
*base64code='=';
base64code++;
}
*base64code = '\0';
}
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
mzwww
C# 111,128 成员 642,536 内容