CAPL脚本中常用到的数据类型转换—— ASCII数组和字符串互转

字符串 转为Ascii 数组

源代码

/***************************************************************************************************

----------------------------------------------------------------------------------------------------                                                                                                 
 Function name:   GBF_ConvertStrToASCIIArr
----------------------------------------------------------------------------------------------------                                                                                                  
 Description:     Converts a String to a byte array
----------------------------------------------------------------------------------------------------                                                                                                 
 Parameters:      inStr    - The byte array to convert
                  numChars - the number of characters to convert
                  outArray - A byute array that upon success will contain the converted values                    
----------------------------------------------------------------------------------------------------                                                                                                 
 Return value:    gcOk if no error occurred during conversion, gcNok otherwise                
----------------------------------------------------------------------------------------------------                                                                                                                                                                                                 
***************************************************************************************************/
byte GBF_ConvertStrToASCIIArr(char inStr[],int numChars, byte outArray[])
{

    //Variables
    int i;                  //General counter
    byte retVal;            //return value
    char tmpErrStr[256];   //temp string
    retVal = gcOk;
    if(elcount(outArray) < numChars)
    {
      retVal = gcNok;
      snprintf(tmpErrStr, elcount (tmpErrStr), "GBF_ConvertStrToASCIIArr: ERROR: Output Array not large enough for conversion!");
      write(tmpErrStr);
    }   
    else
    {
        for (i=0;i<numChars;i++)
        {
            outArray[i] = (byte) inStr[i];
        }  
    }  
    return retVal;
}

测试脚本

   {
    char in_array[50]="123";
    byte out_array[50];    
    GBF_ConvertStrToASCIIArr(in_array,strlen(in_array),out_array);    
    write("out_array ={0x%X,0x%X,0x%X} ",out_array[0],out_array[1],out_array[2]);   
  }

运行测试结果:
out_array ={0x31,0x32,0x33}

对照下图可以看出 1,2,3对应的ASCII是0x31,0x32,0x33
在这里插入图片描述

Ascii数组转为字符串

源代码


/***************************************************************************************************
----------------------------------------------------------------------------------------------------                                                                                                 
 Function name:   GBF_ConvertASCIIArrToStr
----------------------------------------------------------------------------------------------------                                                                                                  
 Description:     Converts an ASCII byte array to a string (character array) that is suitable for printing
----------------------------------------------------------------------------------------------------                                                                                                 
 Parameters:      rawData - The byte array to convert
                  outStr  - A character array that upon success will contain the converted values                 
----------------------------------------------------------------------------------------------------                                                                                                 
 Return value:    gcOk if no error occurred during conversion, gcNok otherwise                  
--------------------------------------------------------------------------------------------------                                                                                                                                                                                                 
***************************************************************************************************/

byte GBF_ConvertASCIIArrToStr(byte rawData[], char outStr[])
{
   word i;
   word byteIndex;
   long tmpVal;
   byte retVal;
   char tmpStr[10];
   char tmpErrStr[gcText200];
   byte charsNeeded;   
   retVal = gcOk;   

   // VS/dsa: Reset output string
   strncpy(outStr, "", elcount(outStr));   
   // VS/dsa: Check that the supplied output array can hold all byte values and a string terminator character     
   charsNeeded = elcount(rawData) + 1;
   if(elcount(outStr) < charsNeeded)
   {
      retVal = gcNok;
      snprintf(tmpErrStr, elcount (tmpErrStr), "GBF_ConvertASCIIArrToStr: ERROR: Input parameters do not match, rawData contains %d elements and outStr only %d, %d are needed !", elcount(rawData), elcount(outStr), charsNeeded);
      write(tmpErrStr);
   }   
   else
   {
      // VS/dsa: Set second character to the string terminator character
      tmpStr[1] = = 0x00;      
      for (i = 0; i < elcount(rawData); i++)
      {    
         tmpStr[0] = rawData[i];         
         // VS/dsa: Build output string. 
         strncat(outStr, tmpStr, elcount(outStr));
      }
   }
   return retVal;
}

测试脚本

  {
    byte in_byte_array[4]={0x31,0x32,0x33,0x34};      
    char out_array[5]; //4+1
    GBF_ConvertASCIIArrToStr(in_byte_array,out_array);    
    write("out_array = %s; ",out_array);   
  }

运行测试结果:
out_array = 1234;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值