16进制CString转换为BYTE*

「已注销」 2010-04-22 10:35:48
截取封包程序显示的是16进制的文本,如何把他还原为BYTE*
也就是封包数据内容的原型
...全文
780 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
eyodo8 2010-04-23
  • 打赏
  • 举报
回复
char* CDataManager::WToA(WCHAR* wString)
{
if (wString == NULL)
{
return NULL;
}
size_t wLen = wcslen( wString ) + 1;
int aLen=WideCharToMultiByte(CP_UTF8,0,wString,wLen,NULL,0,NULL,NULL);

char* lpa = new char [aLen];

WideCharToMultiByte(CP_UTF8,0,wString,wLen,lpa,aLen,NULL,NULL);

return lpa;

}
WCHAR* CDataManager::AToW(char* String)
{
if (String == NULL)
{
return NULL;
}
size_t aLen = strlen( String ) + 1;
int wLen = MultiByteToWideChar(CP_UTF8,0,String,aLen,NULL,0);
WCHAR* lpw = new WCHAR [wLen];
MultiByteToWideChar(CP_UTF8,0,String,aLen,lpw,wLen);
return lpw;

}这个是wchar互转utf-8的,如果你要wchar互转ansi,可以把CP_UTF8改成CP_ACP,
尹成 2010-04-22
  • 打赏
  • 举报
回复

逐位转化
ss[i]=Str[i]-'0'

CStringm_szStr=_T("ThisisaTest,这是一个测试");
BYTEm_data[1024];
memcpy((void*)m_data,m_szStr.GetBuffer(1024),1024)
soswaidao 2010-04-22
  • 打赏
  • 举报
回复
友情帮顶,友情帮顶
「已注销」 2010-04-22
  • 打赏
  • 举报
回复
这样子对不对?
「已注销」 2010-04-22
  • 打赏
  • 举报
回复

UpdateData(true);
int ilen = m_edit1.GetLength();
BYTE * m_packBuf = new BYTE[ilen+1/3];
char* p;
char* s;
char* d= " ";
s = m_edit1.GetBuffer(ilen);
p=strtok(s,d);
int x = 0;
int y = 0;
int i = 0;
m_edit2 = "";
while(p)
{
x=0;
y=0;
char a[2]={0};
for(int ilen=0;p[ilen]!=0;ilen++)
{

switch(ilen)
{
case 0:
a[0] = m_edit1.GetAt(i*2);
break;
case 1:
a[1]=m_edit1.GetAt(i*2+1);
break;
}
}
BYTE tmp=BYTE(strtol(a, NULL, 16));
m_packBuf[i] = tmp;
//m_edit2+=tmp;
i++;
p = strtok(NULL,d);
}

edit1里面的内容为 C1 06 F4 03 15 00,也就是截取封包软件显示的格式

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧