⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 englishcode.cpp

📁 调用CodeEnglish函数 其中
💻 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 + -