最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解讀C#中ReadString的一些小疑惑

 更新時間:2023年01月24日 15:05:39   作者:成長的香蕉  
這篇文章主要介紹了關于C#中ReadString的一些小疑惑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

ReadString的一些小疑惑

BinaryReader . ReadString 方法  ()

從當前流中讀取一個字符串。 字符串有長度前綴,一次 7 位地被編碼為整數(shù)。

初學文件操作, 當我看見ReadString這個方法時, 很疑惑,字符串有長度前綴, 前綴在哪,誰定義的?

最后在無數(shù)次驗證和冥想后,在百度中找到了答案。。。

其實這個長度前綴是由BinaryWriter, Write(string)這個方法寫進去的,這個長度前綴一次7位被編碼為整數(shù), 也就是說,一般一個字節(jié)是8位, 但是他七位就編程一個字節(jié), 所以這個字節(jié)最大的長度為128,所以當一個字節(jié)為128時,用于長度的每個字節(jié)只用7個比特,最高位用來表示是否有后續(xù)長度字節(jié),

0 0000101, 最高位零,因此長度為5。

1 0000011,最高位為  1 ,表示還有后續(xù)字節(jié),用兩個字節(jié) 來表示長度為 1 * 128 + 3 = 131。

下面給出我驗證的結果:

這里都是用16進制來展示的 轉化為二進制:

80 為1 0000000,因為最高位為1 表示進了一位 所以再用一個字節(jié)表示進位0 0000001 

也就是 1 * 128 = 128 ;

80 02 也就是 2 * 128 = 256 ;

D8  23 也就是 23轉化為十進制 35 * 128 = 4480 ;

D8  二進制位:11011000; 要減一個 最高位 也就是

11011000 - 10000000 = 10 11000 = 88(十進制);

7E 二進制:0 1111110; 最高位為0; 所以不需要進位 為126;

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

进贤县| 通榆县| 大冶市| 高清| 武邑县| 隆子县| 灌云县| 紫云| 宁武县| 神池县| 南阳市| 石狮市| 营口市| 辽中县| 南平市| 怀远县| 黄陵县| 南溪县| 新民市| 千阳县| 合作市| 珲春市| 晋宁县| 衡水市| 岳普湖县| 连州市| 陵水| 静宁县| 运城市| 通州区| 宜兴市| 海南省| 潜山县| 道孚县| 金阳县| 静乐县| 环江| 岳阳县| 芷江| 井研县| 潞城市|