CString strHex=L"",strOut = L"";
CHAR info[10] = "你好"
INT len = strlen(info)*sizeof(CHAR);
DWORD dwX = (DWORD)&info; //獲取記憶體中的地址
for(INT i=0;i< len;i++)
{
BYTE a = *(BYTE*)(dwX+i); //獲取記憶體中的存放的一個16進制的位元組
strHex.Format(TEXT("%02X"), a);
strOut += strHex;
}
//列印
::OutputDebugStringW(strOut);
------------------------------
列印出來的也是正常的,但是遇到一個新的問題,我在改變一個第三方程式界面的時候,注入直接修改字串記憶體,英文數字都正常,中文就是亂碼,用CE看了下正常的字串的BYTE陣列,用上面這個生成出來的BYTE陣列還是亂碼,他是一個漢字大概3個位元組這樣的BYTE陣列。
網上唯一找到一個字串轉16進制,符合需求的就是:http://www.bejson.com/convert/ox2str/ 1個漢字三個16進制,
本來想看下他的演算法,不過他是用AJAX呼叫的,
uj5u.com熱心網友回復:
對電腦而言沒有亂碼,只有二進制位元組;對人腦才有亂碼。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8Auj5u.com熱心網友回復:
謝謝回復,已經搞定了,原來要轉成UTF-8格式就可以了uj5u.com熱心網友回復:
1個漢字占三個位元組,是UTF-8編碼uj5u.com熱心網友回復:
3位元組的中文 utf8轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/89663.html
標籤:基礎類
