自己Try出來可以這樣轉換,也沒這樣寫過(pszBuf + i)[0]這類的用法,
紀錄一下;以免忘記,
此代碼可直接傳WCHAR* 的值測就會用了。
void ChangeWByte(WCHAR *pszBuf) { WCHAR *pszChar; pszChar = _T(" "); int nLength = wcslen(pszBuf); for(int i = 0; i < nLength; i++) { // (pszBuf + i)該位置取2 bytes的字 // 去找是不是空白 -> 0x20 0x00 if((pszBuf + i)[0] == pszChar[0]) { //可以這樣強制轉換WCHAR* -> BYTE* // 變成一次取代一個BYTE的HEX值。 memset((BYTE*)(pszBuf+ i), 0x21, 1); //亦可以強制轉換,直接給值。 //但[索引值] 需要當作轉換後的BYTE的索引值,故i要乘2. ((BYTE*)pszBuf)[(i*2)+1] = (BYTE)0x07; } } //最後把值利用Format給CString變數, //傳進來的pszBuf其實已經被改變。 主要是有需要可以給其他成員變數。 //另註解有CString轉WCHAR的方法。 //先強制轉換CString -> LPCTSTR 才能在強制轉換成 WCHAR* // CString strBuffer; // WCHAR *pszBuf ; // pszBuf = (WCHAR*)(LPCTSTR)strBuffer; CString strDest; strDest.Format( _T("%s"), pszBuf); }
沒有留言:
張貼留言