如何使用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


非常感谢,请问可否举几个具体的例子。
智能推荐

注意!

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



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

赞助商广告