问个类的小问题 int CCommWizardDlg::String2Hex(CString str, CByteArray &senddata)这句话怎样实现?具体的步骤是什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 提供个类似的:#define HEX_NUMBERS "0123456789ABCDEF" static void char_to_hex(unsigned char c, char* buffer) { buffer[0] = HEX_NUMBERS[c / 16]; buffer[1] = HEX_NUMBERS[c % 16]; } /* Convert binary data in <buf> of size <len> to a hex-encoded string */ char *mem_to_hexstr(const unsigned char *buf, int len) { int i; char *tmp; /* 2 hex chars per byte, +1 for terminating 0 */ char *ret = (char*)malloc(len * 2 + 1); if (!ret) return NULL; tmp = ret; for (i = 0; i < len; i++) { char_to_hex(*buf++, tmp); tmp += 2; } *tmp = 0; return ret; } 晕,没明白楼主问的意思。这个函数肯定和这个类没多大关系,只是放在这里边而已。字面意思是字符串转换为HEX编码,只是把这个实现放在这个类中而已。 int CCommWizardDlg::String2Hex(CString str, CByteArray &senddata){ int hexdata,lowhexdata; int hexdatalen=0; int len=str.GetLength(); senddata.SetSize(len/2); for(int i=0;i<len;) { char lstr,hstr=str[i]; if(hstr==' ') { i++; continue; } i++; if(i>=len) break; lstr=str[i]; hexdata=ConvertHexChar(hstr); lowhexdata=ConvertHexChar(lstr); if((hexdata==16)||(lowhexdata==16)) break; else hexdata=hexdata*16+lowhexdata; i++; senddata[hexdatalen]=(char)hexdata; hexdatalen++; } senddata.SetSize(hexdatalen); return hexdatalen;}char CCommWizardDlg::ConvertHexChar(char ch) { if((ch>='0')&&(ch<='9')) return ch-0x30; else if((ch>='A')&&(ch<='F')) return ch-'A'+10; else if((ch>='a')&&(ch<='f')) return ch-'a'+10; else return (-1);}这是两个函数的全部!我是在网上找的,想放在自己的程序里用!直接复制粘贴不行啊! 在ClassWizard中为SCommTestDlg类添加以下两个PUBLIC成员函数 int CCommWizardDlg::String2Hex(CString str, CByteArray &senddata)char CCommWizardDlg::ConvertHexChar(char ch)把这里的CCommWizardDlg换成你自己的类名,再在你的类中添加以下二行:int String2Hex(CString str, CByteArray &senddata);char ConvertHexChar(char ch); 可能是VC的bug吧,有时候在classview中没有显示类!所以我就在ClassWizard那里搞!结果..... 经过我两天的绞尽脑汁,发现注册表启动是不可能的事 wireshark如何获取QQ文件传输的文件名? 逻辑题 VC里面怎么有对文件的操作? 关于组件在VB中调用的一个问题 讯弛1.3相当与P4的多少 学mfc应否先死背大量类及其成员函数? 对话框背景问题 怎样为 NOTIFYICONDATA::szTip赋值? ocx控件问题,求指教? 单文档工程怎么改变框架的背景色等? a=-2 ????
static void char_to_hex(unsigned char c, char* buffer)
{
buffer[0] = HEX_NUMBERS[c / 16];
buffer[1] = HEX_NUMBERS[c % 16];
}
/* Convert binary data in <buf> of size <len> to a hex-encoded string */
char *mem_to_hexstr(const unsigned char *buf, int len)
{
int i;
char *tmp;
/* 2 hex chars per byte, +1 for terminating 0 */
char *ret = (char*)malloc(len * 2 + 1);
if (!ret)
return NULL;
tmp = ret;
for (i = 0; i < len; i++) {
char_to_hex(*buf++, tmp);
tmp += 2;
}
*tmp = 0;
return ret;
}
晕,没明白楼主问的意思。这个函数肯定和这个类没多大关系,只是放在这里边而已。字面意思是字符串转换为HEX编码,
只是把这个实现放在这个类中而已。
{
int hexdata,lowhexdata;
int hexdatalen=0;
int len=str.GetLength();
senddata.SetSize(len/2);
for(int i=0;i<len;)
{
char lstr,hstr=str[i];
if(hstr==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
break;
else
hexdata=hexdata*16+lowhexdata;
i++;
senddata[hexdatalen]=(char)hexdata;
hexdatalen++;
} senddata.SetSize(hexdatalen);
return hexdatalen;
}
char CCommWizardDlg::ConvertHexChar(char ch)
{
if((ch>='0')&&(ch<='9'))
return ch-0x30;
else if((ch>='A')&&(ch<='F'))
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))
return ch-'a'+10;
else return (-1);
}
这是两个函数的全部!我是在网上找的,想放在自己的程序里用!
直接复制粘贴不行啊!
char CCommWizardDlg::ConvertHexChar(char ch)
把这里的CCommWizardDlg换成你自己的类名,再在你的类中添加以下二行:
int String2Hex(CString str, CByteArray &senddata);
char ConvertHexChar(char ch);