Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.NET从文件流的特定位置读取数据_C#_.net - Fatal编程技术网

C# 使用.NET从文件流的特定位置读取数据

C# 使用.NET从文件流的特定位置读取数据,c#,.net,C#,.net,我正在尝试从文件流中读取数据,如下所示: fileStream.Read(byteArray, offset, length); BitConverter.ToUInt32(length, 0); //length is a 4 byte long byte-array 问题是我的偏移量和长度是无符号整数,而上面的函数只接受整数。如果我将类型转换为int,我得到的偏移量为负值,这是没有意义的,并且函数不能接受 偏移量和长度最初取自另一个字节数组,如下所示: fileStream.Read(b

我正在尝试从文件流中读取数据,如下所示:

fileStream.Read(byteArray, offset, length);
BitConverter.ToUInt32(length, 0); //length is a 4 byte long byte-array
问题是我的偏移量和长度是无符号整数,而上面的函数只接受整数。如果我将类型转换为int,我得到的偏移量为负值,这是没有意义的,并且函数不能接受

偏移量和长度最初取自另一个字节数组,如下所示:

fileStream.Read(byteArray, offset, length);
BitConverter.ToUInt32(length, 0); //length is a 4 byte long byte-array

从文件流的任意位置读取的正确方法是什么。

如果您在转换过程中遇到问题,类似的方法可能会有所帮助:

    uint myUInt;
    int i = (int)myUInt; or
    int i = Convert.ToInt32(myUInt);

我不确定这是否是处理它的最佳方式,但您可以更改流的位置并使用偏移量0。类型为
long

fileStream.Position = (long)length;
fileStream.Read(byteArray, 0, sizeToRead);

对于这样的文件大小,您应该以小的块读取文件,处理该块并读取下一块。int.MaxValue约为2GB,uint.MaxValue约为4GB。这样的大小不适合大多数计算机(ram;)

基本上你使用的是
FileStream。读错了。Elisha发布了你需要的正确答案。如果您的阵列大于2GB,您需要重新考虑这一点!确切地640K-erm-1GB对任何人来说都应该足够了。