1. 程式人生 > WINDOWS開發 >C#字串在記憶體中的具體數值和佔長

C#字串在記憶體中的具體數值和佔長

在學習資料在記憶體中的儲存方式時突然想到這個問題,在查閱了資料後有點大概的思路,但是網上還是有看到不同的答案,如這裡的回答:https://q.cnblogs.com/q/35325/

目前先把自己的感悟寫下來吧,以後懂了再更新。

這裡寫段小程式碼跑一下做示例:

strings = "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)

技術分享圖片

技術分享圖片

(截圖來自搜狗百科)