自己写的函数归纳

本文提供了一系列用于字符串转换的实用函数,包括ASCII到十六进制、十六进制到十进制的转换方法,以及去除字符串中的特殊字符等。适用于嵌入式系统及软件开发中的数据处理需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  ASIC字符串转换成十六进制字符

 

<span style="font-size:18px;">//---------------------------------------------------------------------
//Convert ASIC To Hex Value
//---------------------------------------------------------------------

//将ASIC的字符(编辑框取到的字符)转成十六进制字符
//例编辑框中输入6,用字符串取出后,再用此函数可以转成0x06;
unsigned char AsicConvert (unsigned char i, unsigned char j)
{
	switch (i) 
	{	               
	case 0x30:return (j=0x00);break; 
	case 0x31:return (j=0x01);break; 
	case 0x32:return (j=0x02);break; 
	case 0x33:return (j=0x03);break; 
	case 0x34:return (j=0x04);break; 
	case 0x35:return (j=0x05);break; 
	case 0x36:return (j=0x06);break; 
	case 0x37:return (j=0x07);break; 
	case 0x38:return (j=0x08);break; 
	case 0x39:return (j=0x09);break; 
	case 0x41:
	case 0x61:return (j=0x0A);break;
	case 0x42:	
	case 0x62:return (j=0x0B);break; 
	case 0x43:
	case 0x63:return (j=0x0C);break; 
	case 0x44:
	case 0x64:return (j=0x0d);break;
	case 0x45:	
	case 0x65:return (j=0x0e);break; 
	case 0x46:
	case 0x66:return (j=0x0f);break;
	case 0x20:return (' ');break; 
	default: return(j=0x10);break;
	}
	
}</span>

 

应用实例可参考和下面函数一起使用的例子。

 

2. 编辑框取值,字符串转成char字符

<span style="font-size:18px;">//---------------------------------------------------------------------
//编辑框取值,字符串转char函数
//---------------------------------------------------------------------

//该函数只能转0~F的字符
//编辑框取出的字符串作为该函数的输入参数(第一个参数)
//执行该函数后,需用一个字符数组指针接收其返回值
//该函数返回将输入的字符串转化后的各字符

//注意:编辑框中的两个字符代表输出后的一个字符
//例如:如需输出字符1,则编辑框中需输入01;如需要输出字符f,则编辑框中需输入0f
//如编辑框中输入5a,则输出字符为5A
unsigned char* EditDataCvtChar (CString strCnv, unsigned char * charRec)
{
	//从RowNum编辑框取值
	unsigned char * BSNum;
	int CNumByte;
	unsigned char k=0;
	int i,j=0;

	CNumByte=strCnv.GetLength();
	BSNum = new unsigned char [CNumByte];
	charRec = new unsigned char [CNumByte];
	
	BSNum = (unsigned char*)(LPCSTR)strCnv;
	
	for(i=0;i<CNumByte;i++)
	{
		charRec[i] = (AsicConvert(BSNum[j],k)<<4) | AsicConvert(BSNum[j+1],k);
		j += 2;
	}

	return charRec;
}</span>


应用实例:


3. 十六进制字符串转十进制整型的函数

<span style="font-size:18px;">//---------------------------------------------------------------------
//十六进制字符串转十进制整型函数
//---------------------------------------------------------------------

int ChangeNum (CString str, int length)
{
	char  revstr[16]={0};  //根据十六进制字符串的长度,这里注意数组不要越界
	int   num[16]={0};  
	int   count=1;  
	int   result=0;  
	strcpy(revstr,str);  
	for   (int i=length-1;i>=0;i--)  
	{  
		if ((revstr[i]>='0') && (revstr[i]<='9'))  
			num[i]=revstr[i]-48;//字符0的ASCII值为48
		else if ((revstr[i]>='a') && (revstr[i]<='f'))  
			num[i]=revstr[i]-'a'+10;  
		else if ((revstr[i]>='A') && (revstr[i]<='F'))  
			num[i]=revstr[i]-'A'+10;  
		else  
			num[i]=0;
		result=result+num[i]*count;  
		count=count*16;//十六进制(如果是八进制就在这里乘以8)   
	}  
	return result;

}</span>


 

应用实例

 

4. 将带回车键或空格键的字符串整理成没有回车键、空格键的字符串:

<span style="font-size:18px;">BYTE* PacketString (CString cvtStr, BYTE* packetBuf)
{
	CString findStr = "\r\n";
	int dPos=0;
	int startPos=0;

	// delete the enter key string
	while((dPos=cvtStr.Find(findStr,startPos)) != -1)
		cvtStr.Delete(dPos,2);

	AfxMessageBox(cvtStr);
	return packetBuf;
}</span>


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值