摘要介绍了一个用于串口通信的CString转十六进制数据工具函数String2Hex。该函数将带分隔符的CString字符串如FF,00,3F转换为CByteArray字节数组自动忽略分隔符并处理大小写字母的十六进制转换。配套的ConvertHexChar辅助函数实现字符到数值的转换。使用时只需传入源字符串、目标数组和分隔符如逗号即可获得可直接通过串口发送的十六进制数据适用于需要发送十六进制指令的串口通信场景。一般的程序对字符串操作串口程序却时常采用十六进制串。我在本在的社区中看到一位大侠的一个转换算法不错贴出来和大家贡献。char ConvertHexChar(char ch)int String2Hex(CString str, CByteArray senddata,char*tag)函数功能将CString 类型的str转换成CByteArray类型保存在senddata中,tag是分隔符。函数原型int String2Hex(CString str, CByteArray senddata,char* tag){int hexdata,lowhexdata;int hexdatalen0;int lenstr.GetLength();senddata.SetSize(len/2);for(int i0;ilen;){char lstr,hstrstr[i];if(!strcmp(hstr,tag){i;continue;}i;if(ilen)break;lstrstr[i];hexdataConvertHexChar(hstr);lowhexdataConvertHexChar(lstr);if((hexdata16)||(lowhexdata16))break;elsehexdatahexdata*16lowhexdata;i;senddata[hexdatalen](char)hexdata;hexdatalen;}senddata.SetSize(hexdatalen);return hexdatalen;}char ConvertHexChar(char ch){if((ch0)(ch9))return ch-0x30;else if((chA)(chF))return ch-A10;else if((cha)(chf))return ch-a10;else return (-1);}例要发送的十六进制数据为FF,00,00,00,3F,00,## 分隔符为“”CByteArray senddata;CString strFF,00,00,00,3F,00,## ;String2Hex(str,senddata,,);接下来就可以把senddata.GetData()获得的数据通过串口发送出去了这时发送的是十六进制的数据。
字符串转换为十六进制 转换算法
发布时间:2026/6/7 2:53:21
摘要介绍了一个用于串口通信的CString转十六进制数据工具函数String2Hex。该函数将带分隔符的CString字符串如FF,00,3F转换为CByteArray字节数组自动忽略分隔符并处理大小写字母的十六进制转换。配套的ConvertHexChar辅助函数实现字符到数值的转换。使用时只需传入源字符串、目标数组和分隔符如逗号即可获得可直接通过串口发送的十六进制数据适用于需要发送十六进制指令的串口通信场景。一般的程序对字符串操作串口程序却时常采用十六进制串。我在本在的社区中看到一位大侠的一个转换算法不错贴出来和大家贡献。char ConvertHexChar(char ch)int String2Hex(CString str, CByteArray senddata,char*tag)函数功能将CString 类型的str转换成CByteArray类型保存在senddata中,tag是分隔符。函数原型int String2Hex(CString str, CByteArray senddata,char* tag){int hexdata,lowhexdata;int hexdatalen0;int lenstr.GetLength();senddata.SetSize(len/2);for(int i0;ilen;){char lstr,hstrstr[i];if(!strcmp(hstr,tag){i;continue;}i;if(ilen)break;lstrstr[i];hexdataConvertHexChar(hstr);lowhexdataConvertHexChar(lstr);if((hexdata16)||(lowhexdata16))break;elsehexdatahexdata*16lowhexdata;i;senddata[hexdatalen](char)hexdata;hexdatalen;}senddata.SetSize(hexdatalen);return hexdatalen;}char ConvertHexChar(char ch){if((ch0)(ch9))return ch-0x30;else if((chA)(chF))return ch-A10;else if((cha)(chf))return ch-a10;else return (-1);}例要发送的十六进制数据为FF,00,00,00,3F,00,## 分隔符为“”CByteArray senddata;CString strFF,00,00,00,3F,00,## ;String2Hex(str,senddata,,);接下来就可以把senddata.GetData()获得的数据通过串口发送出去了这时发送的是十六进制的数据。