在學習數據在內存中的存儲方式時突然想到這個問題,在查閱了資料后有點大概的思路,但是網上還是有看到不同的答案,如這里的回答:https://q.cnblogs.com/q/35325/
目前先把自己的感悟寫下來吧,以后懂了再更新。
這里寫段小代碼跑一下做示例:
string s = "hello world";
Console.WriteLine(s.Length);//輸出11
Byte[] data = System.Text.Encoding.Unicode.GetBytes(s);Console.WriteLine(data.Length);
//輸出22。
s.Length=11不難理解。
data.Length=22,表示字符串s占用了22個字節。由於c#使用的是utf-16進行轉碼,單個字符占用2個字節,一個字節8位,在內存中可以看到單個字符剛好是16位。
比如h,ASCII表中為68,在內存中的表示即為00 68(0000 0000 0110 1000)
(截圖來自搜狗百科)