如圖,不管char還是int還是其他數組或者string等等的,它們的值在內存中都是由
一個個bit組成的
假如char ch = “a”;然後我要讀取它的內存由101010形式輸出,
可能有人會說int i =ch;然後轉成二進制就行了,但是我現在不要用這種方式,因為有時候char的范圍在-128~127有時候在0~256,所以我想直接讀取內存更加准確直觀。
然後另外一個問題是怎麼獲取char的ANSI碼 和 wchar_t 的Unicode碼
目的就是為了獲得內存地址,然後通過內存地址獲得數據,對嗎?
首先:你的做法需要計算機位寬問題.
int i = ch是錯誤的。
我提供Linux X64的例子供參考:
#include
int
main(void)
{
char ch = 'a';
long addr = (long)&ch;
printf("ch addr == %ld\n",addr);
printf("addr's data == %c\n",(char)*(long*)addr);
return 0;
}
結果:
ch addr == 140734165139623
addr's data == a
另外:
char本來就是ANSI碼,如果說是字符顯示,則參考ANSI表。
Unicode編碼,印象中wchar_t默認的,如果是轉utf-8什麼的,就要參考一下轉換規則。