我正在尝试从文件流中读取数据,如下所示:
fileStream.Read(byteArray, offset, length);
问题是我的偏移和长度是无符号Ints,而上面的函数只接受整数。如果我将类型转换为int,我得到的偏移值为负值,这是无意义的,并且不被函数接受。
偏移量和长度最初来自另一个字节数组,如下所示:
BitConverter.ToUInt32(length, 0); //length is a 4 byte long byte-array
从文件流的任意位置读取的正确方法是什么。
答案 0 :(得分:5)
我不确定这是否是处理它的最佳方法,但您可以更改流的位置并使用偏移0. Position的类型为long
。
fileStream.Position = (long)length;
fileStream.Read(byteArray, 0, sizeToRead);
答案 1 :(得分:1)
对于这样的文件大小,您应该以小块读取文件,处理块并读取下一个。 int.MaxValue约为2GB,uint.MaxValue~4GB。这样的大小不适合大多数计算机ram;)
答案 2 :(得分:0)
如果你遇到转换问题,类似的东西可能会有所帮助:
uint myUInt;
int i = (int)myUInt; or
int i = Convert.ToInt32(myUInt);