📄 englishcode.cpp
字号:
// EnglishCode.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <memory.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
//char * EncodeEnglish(char * InputStr);
int CodeEnglish(void * InStr,char * OutStr,int OutBuffLen)
{
int n,len,Count;
unsigned char strTemp1[2],strTemp2[2];
char * strRecv = (char *)InStr;
len=strlen(strRecv);
if(len >= OutBuffLen)
{
printf("OutBuffLen is too little");
return -1;
}
n=0;
Count = 0;
OutStr[0] = '\0';
for(int i = 0;i <= len - 1;i++)
{
if (i < len - 1)
{
strncpy((char *)strTemp1,(char * )(strRecv + i),1);
strncpy((char *)strTemp2,(char * )(strRecv + i) + 1,1);
//忽略每个字符的最高位(第8位),
//依次将下一7位编码的后几位逐次前移。
OutStr[Count] = ((strTemp1[0]>>n)|(strTemp2[0]<<(7-n)))& 0xff;
}
else
{
strncpy((char *)strTemp1,(char * )(strRecv + i),1);
OutStr[Count]=(strTemp1[0]>>n)& 0x7f;
}
n=(n+1)%7;
//移位计数已达7位时,就把移位计置0
if (n==0)
i++;
//保证转换后的编码间是紧凑的。
Count++;
}
OutStr[Count] = '\0';
return 0;
}
int main(int argc, char* argv[])
{
// char str[20];
// str = EncodeEnglish("asdg");
//参数定义
struct Int8
{
unsigned int nTempRet:8;
}Int8Bit;
//定义存放需要转换字符的数组
char strTest[100];
//定义存放转换后字串的数组
char strOutTest[100];
int strOutBeffLen=100;
sprintf(strTest,"%s","HelloHelloWorld");
//调用转换函数
int flag=CodeEnglish(strTest,strOutTest,strOutBeffLen);
//转换失败处理
if(flag==-1)
{
printf("Code Enlish Fail!\n");
}
//得到转换后字串的字节数
int nTemp=strlen(strOutTest);
for (int i=1;i<=nTemp;i++)
{
Int8Bit.nTempRet=strOutTest[i-1];
printf("%x ",Int8Bit.nTempRet);
if((i%16)==0)
printf("\n");
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -