在串口通信编程中,经常要将一个数字字符串转换为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;
case '5':lpWrite[count++] = 0x05;break;
case '6':lpWrite[count++] = 0x06;break;
case '7':lpWrite[count++] = 0x07;break;
case '8':lpWrite[count++] = 0x08;break;
case '9':lpWrite[count++] = 0x09;break;

在串口通信中,需要将数字字符串转换为16进制数并以ASCII码发送。本文介绍两种方法:1) 使用strtol()函数进行转换,2) 利用位运算实现转换。strtol()函数接受目标字符串、传出参数和进制基数,返回转换后的数值,并指明未识别字符的位置。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



