用32位int型變量表示單引號括起來的四個字符的深入探討
// 字符c的16進制值是0x63,字符o的16進制值是0x6f,
// 字符n的16進制值是0x6e
int what = 'conn';
printf("The address of what is 0x%x \n", &what);
printf("what 0x%x \n", what);
if (what == 0x636f6e6e) {
printf("what is 0x636f6e6e \n");
}
char *p = "conn";
printf("p points to [%s] \n", p);
while (*p != 0) {
printf("%x", *p);
p++;
}
運行結(jié)果如下:
The address of what is 0x12ff60
what 0x636f6e6e
what is 0x636f6e6e
p points to [conn]
636f6e6e
也就是說字符'conn'的值用16進制表示就是0x636f6e6e,兩者是等價的。
在Android的framework層用到了這種方法來表示message的值。
其中'conn'的存儲方式是小端存儲。
即:小端:較高的有效字節(jié)存放在較高的的存儲器地址,較低的有效字節(jié)存放在較低的存儲器地址可以直接查看內(nèi)存中'conn'的存儲方式是小端存儲,
地址從低到高依次是:0x12ff60,0x12ff61,0x12ff62,0x12ff63。
存儲的字符依次是:n, n, o, c
最后一個n存在最低位,c存在最高位。
相關(guān)文章
C++中char*轉(zhuǎn)換為LPCWSTR的解決方案
最近在學習C++,遇到了一個char*轉(zhuǎn)換為LPCWSTR的問題,通過查找資料終于解決了,所以下面這篇文章主要介紹了C++中char*轉(zhuǎn)LPCWSTR的解決方案,文中通過詳細的示例代碼介紹的很詳細,有需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01C++實現(xiàn)學生信息管理系統(tǒng)(Map實現(xiàn))
這篇文章主要為大家詳細介紹了C++實現(xiàn)學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06詳解C++設(shè)計模式編程中建造者模式的實現(xiàn)
這篇文章主要介紹了C++設(shè)計模式編程中建造者模式的實現(xiàn),建造者模式將一個復(fù)雜對象的構(gòu)建于它的表現(xiàn)分離,可以減少代碼冗余,需要的朋友可以參考下2016-03-03