📄 codeswitch.cpp
字号:
#include "StdAfx.h"
#include "GHeader.h"
CCodeSwitch codeswitch;
CCodeSwitch::CCodeSwitch()
{
}
CCodeSwitch::~CCodeSwitch()
{
}
BOOL CCodeSwitch::Encode64Text(char tmpmessage[], char *entext)
{
//把数据变为64进制编码
char ASC64[65];
int i,k,Length,j;
for(i=0;i<12;i++)
ASC64[i]=48+i;
for(i=12;i<38;i++)
ASC64[i]=53+i;
for(i=38;i<64;i++)
ASC64[i]=59+i;
ASC64[64]='\0';
Length=strlen(tmpmessage);
k=0;
j=0;
for(i=0,k=0,j=0;i<Length/3;i++)
{
//取第一字高六位
entext[k++]=(tmpmessage[j]>>2)&0x3F;
//取第一字低二位 和第二字高四位
entext[k++]=((tmpmessage[j]<<4)|((tmpmessage[j+1]>>4)&0x0F))&0x3F;
//取第二字低四位 和第三字高二位
entext[k++]=(tmpmessage[j+1]<<2|((tmpmessage[j+2]>>6)&0x03))&0x3F;
//取第三字低六位
entext[k++]=tmpmessage[j+2]&0x3F;
j=j+3;
}
if(Length%3==0)
entext[k]=0;
if(Length%3==1)
{
//取第一字高六位
entext[k++]=(tmpmessage[j]>>2)&0x3F;
//取第一字低二位
entext[k++]=(tmpmessage[j]<<4)&0x3F;
entext[k]=0;
}
if(Length%3==2)
{
//取第一字高六位
entext[k++]=(tmpmessage[j]>>2)&0x3F;
//取第一字低二位 和第二字高四位
entext[k++]=(tmpmessage[j]<<4|((tmpmessage[j+1]>>4)&0x0F))&0x3F;
//取第二字低四位
entext[k++]=(tmpmessage[j+1]<<2)&0x3F;
entext[k]=0;
}
Length=strlen(entext);
for(i=0;i<k;i++)
entext[i]=ASC64[entext[i]];
entext[k]=0;
return TRUE;
}
BOOL CCodeSwitch::Decode64Text(char entext[], char *detext)
{
char ASC64[65];
int i=0,len=0,rlen,klen;
char tmp[1024];
for(i=0;i<12;i++)
ASC64[i]=48+i;
for(i=12;i<38;i++)
ASC64[i]=53+i;
for(i=38;i<64;i++)
ASC64[i]=59+i;
strcpy(tmp,entext);
len=strlen(entext);
for(i=0;i<len;i++)
{
for(rlen=0;rlen<64;rlen++)
{
if(tmp[i]==ASC64[rlen])
{
tmp[i]=rlen;
break;
}
}
}
klen=0;
rlen=0;
for(i=0;i<(len)/4;i++){
detext[rlen++]=(tmp[klen]<<2)|((tmp[klen+1]>>4)&0x03);
detext[rlen++]=(tmp[klen+1]<<4)|((tmp[klen+2]>>2)&0x0F);
detext[rlen++]=(tmp[klen+2]<<6)|(tmp[klen+3]&0x3F);
klen=klen+4;
}
if((len)%4==0){
detext[rlen]=0;
}
if((len)%4==3){
detext[rlen++]=(tmp[klen]<<2)|((tmp[klen+1]>>4)&0x03);
detext[rlen++]=(tmp[klen+1]<<4)|((tmp[klen+2]>>2)&0x0F);
detext[rlen]=0;
}
if((len)%4==2){
detext[rlen++]=(tmp[klen]<<2)|((tmp[klen+1]>>4)&0x03);
detext[rlen]=0;
}
detext[rlen]=0;
return TRUE;
}
BOOL CCodeSwitch::Encode16Text(char smsTxt[], char *smsp)
{
char temp[10]="\0";
size_t CountI=0;
size_t maxTxt=0;
wchar_t tSMS[512];
maxTxt=MultiByteToWideChar (CP_ACP,0,smsTxt,-1,tSMS, 512);
for(CountI=0;CountI<wcslen(tSMS);CountI++)
{
strcpy(temp,"\0");
sprintf(temp,"%04X\0",tSMS[CountI]);
strcat(smsp,temp);
}
return TRUE;
}
BOOL CCodeSwitch::Decode16Text(char buf[], char *temp)
{
WCHAR lpUnicode[1024];
char tmp[1024]="\0";
for(int i=0;i<(int)strlen(buf);i+=4)
{
memcpy(tmp,buf+i,4);
tmp[4]='\0';
sscanf(tmp,"%X",&lpUnicode[i/4]);
}
tmp[i]='\0';
//memcpy(lpUnicode,tmp,strlen(tmp));
WideCharToMultiByte (CP_ACP,0,lpUnicode,-1,temp,256,NULL,NULL);
return TRUE;
}
BOOL CCodeSwitch::Decode7Text(char buf[], char *code)
{
char tmp[3]="\0",ch;
int CountI=0,First=0,Second=0;
int Add=0;
for(CountI=0;CountI<(int)strlen(buf);CountI+=2)
{
strcpy(tmp,"\0");
First=0;
Second=0;
strncpy(tmp,buf+CountI,2);
tmp[2]='\0';
if(Add==0)
{
sscanf(tmp,"%x",&First);//把字符串作为十六进制
ch=(First&0x7F);
}
else
{
sscanf(tmp,"%x",&Second);//把字符串作为十六进制
//=HexToDecimal(tmp,2);
strncpy(tmp,buf+CountI-2,2);
tmp[2]='\0';
sscanf(tmp,"%x",&First);//把字符串作为十六进制
ch=((((First&0xFF)>>(8-Add%7))|((Second&0xFF)<<(Add%7)))&0x7F);
}
sprintf(tmp,"%c\0",ch);
strcat(code,tmp);
if(Add==6)
{
strncpy(tmp,buf+CountI,2);
tmp[2]='\0';
sscanf(tmp,"%x",&First);//把字符串作为十六进制
ch=(((First&0xFF)>>1))&0x7F;
sprintf(tmp,"%c\0",ch);
strcat(code,tmp);
Add=0;
}
else
Add+=1;
}
return TRUE;
}
//英文字符编码为7位,最高位为0,为了发送英文字符,
//可以使用压缩7位编码方式:即7为压缩,能够发送更多字符(160个)
//本函数为把英文最高位压缩掉,可以发送最多160个汉字,如果不压缩,只能发送140个字符
BOOL CCodeSwitch::Encode7Text(char buf[], char *code)
{
int str=0;
char temp[10]="\0";
int CountI=0;
int Add=0;
for(CountI=0;CountI<(int)strlen(buf);CountI++)
{
Add+=1;
strcpy(temp,"\0");
if(CountI==(int)strlen(buf)-1)
str=((buf[CountI]&0x7F)>>(Add%8-1));
else
str=((((buf[CountI]&0x7F)>>(Add%8-1))|((buf[CountI+1]&0x7F)<<(8-Add%8)))&0xFF);
sprintf(temp,"%02X",str);
strcat(code,temp);
if(Add%7==0)
{
Add=0;
CountI+=1;
}
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -