如何使用BinaryReader類,將已存放於數組buffer[256]中隨意位置的數據 取出來放置到BYTE INTEGER DOUBLE 等類型的變量中


如何使用BinaryReader類,將已存放於數組buffer(有256個字節)中隨意位置的數據 取出來放置到  各種 類型的變量中

比如
 (1) buffer數組中  索引是30字節的數據                                          放入     byte變量            A中
 (2) buffer數組中  索引是40字節開始的10個字節的數據             放入      數組                   B 中
 (3) buffer數組中  索引是60字節開始的4個字節的數據                放入      INTEGER 變量 C 中
 (4) buffer數組中  索引是70字節開始的8個字節的數據                放入      double      變量 D 中
 (5) buffer數組中  索引是80字節開始的28個字節的數據              放入      STRING    變量 E 中

8 个解决方案

#1


BinaryReader大致是這樣使用
var stream = new MemoryStream(array);
var br = new BinaryReader(stream);
var x = br.ReadInt32();
br.ReadDouble();
var z = br.ReadChars(30);
br.ReadByte();

#2


var stream = new MemoryStream(array);
stream.Position = 20;
var br = new BinaryReader(stream);
var x = br.ReadInt32();
br.ReadDouble();
var z = br.ReadChars(30);
br.ReadByte();

#3


引用 2 樓 sp1234 的回復:
var stream = new MemoryStream(array);
stream.Position = 20;
var br = new BinaryReader(stream);
var x = br.ReadInt32();
br.ReadDouble();
var z = br.ReadChars(30);
br.ReadByte();


非常感謝,我提出的多個問題,您都給予了熱心的幫助,非常感謝。

因為我剛剛開初學C#,您提供的這兩段代碼,我看起來有些吃力,可否幫忙加些注釋。謝謝。

#4


引用 2 樓 sp1234 的回復:
var stream = new MemoryStream(array);
stream.Position = 20;
var br = new BinaryReader(stream);
var x = br.ReadInt32();
br.ReadDouble();
var z = br.ReadChars(30);
br.ReadByte();


除以上一問,還有兩問:
(1)為什么   br.ReadDouble();    br.ReadByte();    這兩段代碼前沒有加 var 變量 =  ?
(2)br.readXX函數不能直接定位從哪兒讀取,豈不是很不方便。

#5


首先,說明了如何將一個 byte[ ] 實例化入一個 Stream 中。

其次,說明了如何“指定隨機位置”。

最后,用幾個例子說明了如何 ReadDouble、ReadByte、ReadBytes、ReadInt32。BinaryStream 有各種 ReadXXXX 的方法,你可以自己看文檔。

#6


引用 4 樓 BIGGER2016 的回復:
(1)為什么   br.ReadDouble();    br.ReadByte();    這兩段代碼前沒有加 var 變量 =  ?
(2)br.readXX函數不能直接定位從哪兒讀取,豈不是很不方便。


嗯,隨便寫的例子。

當你想跳過固定長度的字節,去讀取后邊的實際的結果,你又懶得算 Position 了,那么這樣寫(丟棄讀取的結果)也未嘗不可。不過如果你覺得設置 Postion 更方便或者更高效,也可以。基本上差別不大(實際測試的結果轉換為用戶的體驗,如果用戶感覺不到差別,那就是“差別不大”)。

#7


BinaryReader主要用於順序讀取Stream中的數據
像你這樣已經有了byte[],並且要讀任意位置,應該改用BitConverter

#8


引用 7 樓 shingoscar 的回復:
BinaryReader主要用於順序讀取Stream中的數據
像你這樣已經有了byte[],並且要讀任意位置,應該改用BitConverter


非常感謝,請問可否舉幾個具體的例子。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com