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;