hur.cn - 华软网

 热门搜索

BYTE类型存放CString问题,谢谢

  作者:未知    来源:网络    更新时间:2011/8/18
BYTE* m_pDataD;
CString stra="50",strb="60";

m_pDataD = new BYTE[2];

如何把stra和strb放入m_pDataD中呢?是不是需要强制类型转换呢?

存入后m_pDataD[0]=50,m_pDataD[1]=60;


---华软 网友回答---
据我愚见,这应该是不可以的
一个BYTE是一个字节,而一个char都一个字节了,更何况是字符串呢?
一个int占4个字节,lz好好想想。。。
---华软网友回复---
用memcpy,指定长度
---华软网友回复---
C++">
                CString stra(_T("50"));
PBYTE m_pDataD = new BYTE[2];

 m_pDataD[0] = (((stra[0]-'0')<<4) | (stra[1]-'0'));

delete[] m_pDataD;

强制类型转换应该是不可以的,楼主不妨这样
---华软网友回复---
sscanf(stra, "%d", &m_pDataD[0])
---华软网友回复---
引用 4 楼 hezhe1008 的回复:
sscanf(stra, "%d", &amp;m_pDataD[0])

楼上,你的方法很简单,不过不够严谨。因为BYTE为8bits,而int为32bits,这样m_pDataD附近的栈就被破坏了。可以改进一下
int n = 0;
sscanf(stra, "%d", &n);
m_pDataD[0] = (BYTE)(n&0x0FF);
---华软网友回复---
m_pDataD[0]=atoi(stra.GetBuffer(0)),m_pDataD[1]=atoi(strb.GetBuffer(0));
---华软网友回复---
哦 
sscanf(stra, "%2d", &m_pDataD[0]);
---华软网友回复---
先转换成 单字节 TCHAR 在赋值进去
---华软网友回复---
m_pDataD[0]=_ttoi(stra);
m_pDataD[1]=_ttoi(strb);      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。