在C、C++中可以用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++;
}
運行結果如下:
The address of what is 0x12ff60
what 0x636f6e6e
what is 0x636f6e6e
p points to [conn]
636f6e6e
也就是說字符'conn'的值用16進制表示就是0x636f6e6e,兩者是等價的。
在Android的framework層用到了這種方法來表示message的值。
其中'conn'的存儲方式是小端存儲。
即:小端:較高的有效字節存放在較高的的存儲器地址,較低的有效字節存放在較低的存儲器地址可以直接查看內存中'conn'的存儲方式是小端存儲,
地址從低到高依次是:0x12ff60,0x12ff61,0x12ff62,0x12ff63。
存儲的字符依次是:n, n, o, c
最後一個n存在最低位,c存在最高位。