在串口通信编程中,经常要将一个数字字符串转换为16进制数,通过还口发送出去,而字符通常是以ASCII码发送。给定任意16进制数字字符串,2位一组转换为16进制数。
方法1:之前不知道有strtol()函数,所以搞了个蛮力的办法
int StringToHex(char *DigitalStr,char *lpWrite)
{
int len = strlen(DigitalStr);
char temp[3],str[3];
memset(temp,0,sizeof(temp));
memset(str,0,sizeof(str));
int p = 0;
int count = 0;
int j = 0;
if(len % 2 == 0)
{
for( ; p < len; p++)
{
if(DigitalStr[p] == '0' && DigitalStr[p+1] == '0')
lpWrite[count++] = 0x00;
else if(DigitalStr[p] == '0')
{
switch(DigitalStr[p+1])
{
case '1':lpWrite[count++] = 0x01;break;
case '2':lpWrite[count++] = 0x02;break;
case '3':lpWrite[count++] = 0x03;break;
case '4':lpWrite[count++] = 0x04;break;