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

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

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

ReadString的一些小疑惑

BinaryReader . ReadString 方法  ()

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

初學(xué)文件操作, 當(dāng)我看見(jiàn)ReadString這個(gè)方法時(shí), 很疑惑,字符串有長(zhǎng)度前綴, 前綴在哪,誰(shuí)定義的?

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

其實(shí)這個(gè)長(zhǎng)度前綴是由BinaryWriter, Write(string)這個(gè)方法寫(xiě)進(jìn)去的,這個(gè)長(zhǎng)度前綴一次7位被編碼為整數(shù), 也就是說(shuō),一般一個(gè)字節(jié)是8位, 但是他七位就編程一個(gè)字節(jié), 所以這個(gè)字節(jié)最大的長(zhǎng)度為128,所以當(dāng)一個(gè)字節(jié)為128時(shí),用于長(zhǎng)度的每個(gè)字節(jié)只用7個(gè)比特,最高位用來(lái)表示是否有后續(xù)長(zhǎng)度字節(jié),

0 0000101, 最高位零,因此長(zhǎng)度為5。

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

下面給出我驗(yàn)證的結(jié)果:

這里都是用16進(jìn)制來(lái)展示的 轉(zhuǎn)化為二進(jìn)制:

80 為1 0000000,因?yàn)樽罡呶粸? 表示進(jìn)了一位 所以再用一個(gè)字節(jié)表示進(jìn)位0 0000001 

也就是 1 * 128 = 128 ;

80 02 也就是 2 * 128 = 256 ;

D8  23 也就是 23轉(zhuǎn)化為十進(jìn)制 35 * 128 = 4480 ;

D8  二進(jìn)制位:11011000; 要減一個(gè) 最高位 也就是

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

7E 二進(jìn)制:0 1111110; 最高位為0; 所以不需要進(jìn)位 為126;

總結(jié)

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

相關(guān)文章

最新評(píng)論

夹江县| 道孚县| 隆化县| 波密县| 天津市| 资溪县| 菏泽市| 微山县| 察哈| 胶州市| 红安县| 靖州| 五寨县| 光泽县| 南乐县| 桃源县| 武鸣县| 赤水市| 仁布县| 石台县| 乐亭县| 喀什市| 银川市| 宣威市| 北票市| 元氏县| 墨玉县| 清丰县| 清水县| 梓潼县| 敖汉旗| 耒阳市| 弋阳县| 泾川县| 锡林浩特市| 义马市| 湟源县| 常熟市| 阿克陶县| 垦利县| 赫章县|