BYTE byRecv[10000] = {0};
dwRecv += m_SocketManager.ReadComm( byRecv, TOTAL_SIZE, INFINITE);
得到ASCII编码的byRecv
形式为#512354...... 后面接很多二进制码 byRecv是ASCII编码CString strRead(byRecv);//这样我想得到Unicode码,但我发现strRead里面就只是#512354,后面的字符都没有了看了一下#512354后面有个 0 该怎么改呢?
dwRecv += m_SocketManager.ReadComm( byRecv, TOTAL_SIZE, INFINITE);
得到ASCII编码的byRecv
形式为#512354...... 后面接很多二进制码 byRecv是ASCII编码CString strRead(byRecv);//这样我想得到Unicode码,但我发现strRead里面就只是#512354,后面的字符都没有了看了一下#512354后面有个 0 该怎么改呢?
解决方案 »
- 做了4年vc开发
- 关于信号量关闭使用CloseHandle的问题。。
- VC++6.0 与VS2010两者的区别与共同点,我弱弱的问,请轻轻的拍,用过VS的说下使用感受吧
- afxsock.h中的Receive函数第一个参数传入整数指针是什么意思.
- 用VC怎样区别串口与USB转成232串口
- @class Myclass;在c++代码里是什么含义?
- 急急急!!!如何把从avi文件中提取出来的音频数据转换成G729支持的格式?
- 请问如何在socket中发送带结构体的数据(结构体中带有指针)?
- 不调用任何现成的库函数,怎样画点画线?
- 紧急求助:有关数组的问题(用函数录入数组记录)
- 求音频波形处理控件,类似于cooledit的功能
- CSplitterWnd分成上下2个窗体后,想让下面窗体随着主窗口onsize时,高度不变
//***************Ansi转化为Unicode*******************//
int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szSrc, strlen(szSrc), NULL, 0);
//分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间
wchar_t* wszString = new wchar_t[wcsLen + 1];
//转换
::MultiByteToWideChar(CP_ACP, NULL, szSrc, strlen(szSrc), wszString, wcsLen);
//最后加上'\0'
wszString[wcsLen] = '\0';
你把byRecv的前20个字节左右的数据发复制了发上来看看
宽字节=a2w(asnscii)
CString strRead(byRecv+n);但你的byRecv是ansi的,要先转换成unicode才行啊你问问发送数据给你的人他是怎么编码的,前面那个#516607有可能是他自己加入的帧格式
{
dwRecv += m_SocketManager.ReadComm( byRecv, TOTAL_SIZE, INFINITE);
int n = 0;
if (byRecv[0] == '#')
{
n = 7;
} CString strRead(byRecv + n);
strReturn += strRead;
}
byRecv形式如5楼所示 但我得到的strRead永远是空,后面的数据全没有 转换出错?
查看器中byRecv后面确实有值,但CString strRead(byRecv + n);
后strRead没有得到呀
strRead里连乱码都没有吗?你把byRecv前20个字节左右数据发上来像这样选中监视窗口里的数据再复制:
int n = 0;
if (byRecv[0] == '#')
{
n = 7;
}
for (n; n < dwRe; n++)
{
CString s;
s.Format(_T("%02X"), byRecv[n]);
strReturn += s;
} dwRecv += dwRe;