C#字符串在內存中的具體數值和占長


在學習數據在內存中的存儲方式時突然想到這個問題,在查閱了資料后有點大概的思路,但是網上還是有看到不同的答案,如這里的回答: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)

 

 

 

(截圖來自搜狗百科)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM