麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#中string在內存中是如何表示的

2019-11-14 13:42:52
字體:
來源:轉載
供稿:網友

不知道你是否有過和我一樣的疑問,不同編碼的字符串是如何存儲在運行時的內存中的呢,計算機在操作string類型的對象時,如何知道這個string是什么編碼呢?和文本文件那樣有類似BOM的東東在string對象里?

答案是,內存中是無關編碼的。統一使用UCS2(注意,這里為什么不說是UTF16,見下文)編碼(大小端應該是和計算機CPU有關,intel的應該是小端)存放在內存中。

string對象和IO交互時,分別根據方法中的Encoding去處理來自IO的字節,或者轉換成Encoding所指示的編碼的字節流作為IO輸出。

另外,上文提到內存中使用的是UCS2而不是UTF16,意思是,對于Unicode編碼值大于0xFFFF的編碼,C#和java一樣,是轉換成“代理對”(2*2字節)表示的。所以,如果string中含有類似emoji那樣的“大”字符時,string的Length方法返回的字符串長度是不正確的。解決方案是,使用StringInfo類中的LengthInTextElements。

 PS:System.Text.Encoding中的Unicode和BigEndianUnicode實際是UTF16,微軟一定有它的道理。只是我不清楚。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲综合色视频在线观看 | 国产亚洲精品一区二区三区 | 中文字幕在线观看免费 | 天天色综合2| 免费观看高清视频网站 | 在线播放黄色网址 | 777午夜精品视频在线播放 | 美女毛片儿 | 久久超| 激情小说色 | 久久久一区二区三区精品 | 国产在线免 | 91精品国产91热久久久做人人 | 精品国产一区二区三区久久久狼牙 | 妇子乱av一区二区三区 | v天堂在线视频 | 亚洲成人涩涩 | 热99re久久免费视精品频软件 | 91美女视频在线 | 国产羞羞视频在线观看免费应用 | 欧美人人干 | 羞羞网站在线观看入口免费 | 全网免费毛片 | 久久9999久久| 精品亚洲夜色av98在线观看 | 日韩中文字幕一区二区三区 | 九九热视频这里只有精品 | 黄色网址免费在线 | 日韩视频―中文字幕 | 久久精品国产亚洲7777小说 | 一本色道久久综合狠狠躁篇适合什么人看 | 成人黄视频在线观看 | 97zyz成人免费视频 | 九九精品在线播放 | 视频一区二区国产 | h视频在线免费观看 | www.91成人| 毛片一区二区三区四区 | 深夜精品福利 | 羞羞视频免费入口网站 | 成人18免费观看 |