读入 VB.NET 时从文件中排除前 'x' 字节的二进制数据
Exclude first 'x' bytes of binary data from a file while reading in VB.NET
我是一个处理二进制文件的菜鸟。它是这个问题的扩展:Reading 'x' bytes of data
我的二进制文件大小 1025 KB,即 1049600 字节,其中包含 1024 字节 的 header 条信息。我只想读取 1023th 位之后的剩余数据,等于 1048576 字节 .
如何排除前 1024 个字节?
我正在使用相同的代码,但我无法让它工作,我的代码有什么问题吗?
Dim arraySizeMinusOne = 5
Dim buffer() As Byte = New Byte(arraySizeMinusOne) {}
Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
fs.Read(buffer, 0, buffer.Length)
Dim _arraySizeMinusOne = 1048575
Dim _buffer() As Byte = New Byte(_arraySizeMinusOne) {}
'Process 1048576 bytes of data here
End Using
创建一个 byte
数组,其长度为整个文件的长度减去您排除的大小并减去 1。最后一个 1
是因为 vb 数组与 c# 数组不同。在 vb:
Dim buff() As Byte = New Byte(10) {}
创建一个 11 大小的数组并在 c# 中:
byte[] buff = new byte[10];
创建 10 码!
Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
Dim buff() As Byte = New Byte(CInt(fs.Length - 1024 - 1)) {}
Dim buffTotal() As Byte = New Byte(CInt(fs.Length - 1)) {}
'read all file
fs.Read(buffTotal, 0, buffTotal.Length)
If fs.Length > 1024 Then
'move from 1024 byte to the end to buff array
Buffer.BlockCopy(buffTotal, 1024, buff, 0, buffTotal.Length - 1024)
End If
End Using
buffer
不是一个好名字,因为 vb 中已经存在 class Buffer
!将其更改为其他内容,例如 buff
.
我是一个处理二进制文件的菜鸟。它是这个问题的扩展:Reading 'x' bytes of data
我的二进制文件大小 1025 KB,即 1049600 字节,其中包含 1024 字节 的 header 条信息。我只想读取 1023th 位之后的剩余数据,等于 1048576 字节 .
如何排除前 1024 个字节?
我正在使用相同的代码,但我无法让它工作,我的代码有什么问题吗?
Dim arraySizeMinusOne = 5
Dim buffer() As Byte = New Byte(arraySizeMinusOne) {}
Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
fs.Read(buffer, 0, buffer.Length)
Dim _arraySizeMinusOne = 1048575
Dim _buffer() As Byte = New Byte(_arraySizeMinusOne) {}
'Process 1048576 bytes of data here
End Using
创建一个 byte
数组,其长度为整个文件的长度减去您排除的大小并减去 1。最后一个 1
是因为 vb 数组与 c# 数组不同。在 vb:
Dim buff() As Byte = New Byte(10) {}
创建一个 11 大小的数组并在 c# 中:
byte[] buff = new byte[10];
创建 10 码!
Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
Dim buff() As Byte = New Byte(CInt(fs.Length - 1024 - 1)) {}
Dim buffTotal() As Byte = New Byte(CInt(fs.Length - 1)) {}
'read all file
fs.Read(buffTotal, 0, buffTotal.Length)
If fs.Length > 1024 Then
'move from 1024 byte to the end to buff array
Buffer.BlockCopy(buffTotal, 1024, buff, 0, buffTotal.Length - 1024)
End If
End Using
buffer
不是一个好名字,因为 vb 中已经存在 class Buffer
!将其更改为其他内容,例如 buff
.