* pSelectData = 4A,*(pSelectData + 1)= 54如何值在型鑄造得到改變從無符號短至無符號整型
unsigned int的值= ((無符號短)pSelectData);
輸出= 21578(十六進制0x544A)。
有人可以解釋我是怎麼發生的(值如何轉換)?
在此先感謝
* pSelectData = 4A,*(pSelectData + 1)= 54如何值在型鑄造得到改變從無符號短至無符號整型
unsigned int的值= ((無符號短)pSelectData);
輸出= 21578(十六進制0x544A)。
有人可以解釋我是怎麼發生的(值如何轉換)?
在此先感謝
更具體的問題是什麼?
根據字節順序,您可以獲得0x4a54或0x544a。這正是您的價值的表現,因爲它在內存中。
這是你的記憶,其中p = pSelectedData,PS =轉換爲短,品脫=強制轉換爲int(小端架構假設):
[ ][4A][54][00][00][ ]
^^^^^
p p+1 p+2 p+3 p+4
ps ps+1 ps+2
pint pint+1
你可能想這樣做:
*(unsigned short*)pSelectedData = 0x4a;
*(unsigned short*)(pSelectedData+1) = 0x54;
哪會給你
[ ][4A][00][54][00][ ]
我的指針有一個字節的數據4A。如果我把它轉換爲無符號的短符號,它將獲取兩個字節的數據。那樣的話應該是'4A54'。我將它存儲在unsigned int中,並將值存儲在544A中。爲什麼不是4A54? – prathvi 2011-02-03 14:19:37