欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

ReadString的一些小疑惑

BinaryReader . ReadString 方法  ()

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

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

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

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

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

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

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

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

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

也就是 1 * 128 = 128 ;

80 02 也就是 2 * 128 = 256 ;

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

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

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

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

總結(jié)

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

相關(guān)文章

  • C#開發(fā)之int與string轉(zhuǎn)化操作

    C#開發(fā)之int與string轉(zhuǎn)化操作

    這篇文章主要介紹了C#開發(fā)之int與string轉(zhuǎn)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C#私有構(gòu)造函數(shù)使用示例

    C#私有構(gòu)造函數(shù)使用示例

    本文主要介紹了C#私有構(gòu)造函數(shù)使用方法,私有構(gòu)造函數(shù)是一種特殊的實例構(gòu)造函數(shù)。它通常用在只包含靜態(tài)成員的類中。如果類具有一個或多個私有構(gòu)造函數(shù)而沒有公共構(gòu)造函數(shù),則其他類(除嵌套類外)無法創(chuàng)建該類的實例
    2014-01-01
  • C#中 const 和 readonly 的不同

    C#中 const 和 readonly 的不同

    const 和 readonly 的區(qū)別,總是不太清楚,于是查了查資料。
    2013-04-04
  • C#中Equals方法的常見誤解

    C#中Equals方法的常見誤解

    equals方法被用來檢測兩個對象是否相等,即兩個對象的內(nèi)容是否相等。本文主要介紹的是equals方法,初學(xué)者對它幾個常見的誤解,一起來看。
    2015-10-10
  • 使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟

    使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟

    在C#中與數(shù)據(jù)庫進行交互,通常使用ADO.NET(ActiveX Data Objects .NET)框架,ADO.NET是.NET Framework中用于數(shù)據(jù)訪問的一組類庫,它提供了多種用于連接和操作數(shù)據(jù)庫的方法,以下是使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟,需要的朋友可以參考下
    2024-08-08
  • C#實現(xiàn)簡易畫圖板的示例代碼

    C#實現(xiàn)簡易畫圖板的示例代碼

    這篇文章主要介紹了C#實現(xiàn)簡易畫圖板的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C#在Excel表格中插入、編輯和刪除批注

    C#在Excel表格中插入、編輯和刪除批注

    這篇文章主要為大家詳細介紹了C#如何在Excel表格中插入、編輯和刪除批注,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀

    C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀

    這篇文章主要介紹了C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解C#壓縮、解壓文件夾/文件(帶密碼)

    詳解C#壓縮、解壓文件夾/文件(帶密碼)

    這篇文章主要給大家介紹了關(guān)于C#壓縮、解壓文件夾/文件(帶密碼)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C# cmd中修改顯示(顯示進度變化效果)的方法

    C# cmd中修改顯示(顯示進度變化效果)的方法

    好多人想在運行或者調(diào)試含有大量數(shù)據(jù)或者比較慢C#程序的時候能夠顯示自己的程序完成的程度,這里有一個方法能發(fā)不斷地修改cmd的同一行,以達到顯示完成百分比的目的
    2013-04-04

最新評論