Help needed with reading binary files

dd86

Member
Joined
Oct 14, 2005
Messages
16
Programming Experience
Beginner
I need help with binary file access. Apparently all the information in it is in hexadecimal. I need to extract that information as hexadecimal and push it into an array. Can anyone help me with this?
 
I think you need to provide more details e.g sample file and codes before anyone can exactly understand what are you going to do...
 
Well, i don' hve a confirmed piece of code. I am using a sample one to extract the characters in the file as UInt16 and write them into a .txt file.

Apparently, all the info in the binary file i have is in big endian eg. most significant byte stored first. I aslo need to know which data type to use so that i can convert the characters into allowed hexadecimal numbers.

If you require the binary files and my code, please PM me your e-mail and I'd b more happy to send it 2 u
 
Why email and stuff? are you hiding your code from us? We are helpers here rather but code stealers (remember that for your further threads)!
I'll wait for ayozzhero to provide you some help ... otherwise, i'll try to resolve your problem but remember we are not dying to see your code and notice that you are the one who needs a help (btw, if the code was so good your problem would be already resolved)
Nothing personaly but you abuse entire community like this.

Regards ;)
 
I would want to but up to now I can't... because there is too much too guess. And I don't even know whether I can help or not.

If your project contains a confidential data or something, you might just modify them before posting it here.
 
hding code? haha...no way...jus tht its gt nothing to do wit wat i am planning to do so far...here it is though...

Imports System.IO
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.RichTextBox1 = New System.Windows.Forms.RichTextBox
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'RichTextBox1
'
Me.RichTextBox1.Location = New System.Drawing.Point(48, 40)
Me.RichTextBox1.Name = "RichTextBox1"
Me.RichTextBox1.Size = New System.Drawing.Size(448, 320)
Me.RichTextBox1.TabIndex = 0
Me.RichTextBox1.Text = ""
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(240, 392)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 1
Me.Button1.Text = "Button1"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(560, 516)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.RichTextBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim fs As FileStream = New FileStream("C:\Arch.bin", FileMode.OpenOrCreate)
Dim ctr As Int32
Dim num As UInt16
Dim n As String

Dim r As System.IO.BinaryReader = New System.IO.BinaryReader(fs)


For ctr = 0 To 10

num = r.ReadUInt16
n = Hex(num)
Dim writer As IO.StreamWriter
writer = IO.File.AppendText("c:\myfile.txt")
writer.WriteLine(num)
writer.Close()
Next
End Sub

End Class

pls keep in mind all the details i gave in my 2nd post to this topic...soory if it seemed like i was abusin
 
Okay now where/what the issue... only thing I can see is
u're reading the num (integer) and convert it to Hex and put it in n (string) and u write the num (integer) to the text file. Is this where u went wrong
 
Well to my understanding.... when reading and saving binary mode we used to use access by Bytes,... so will following change would satisfy ur requirement

Dim fs As FileStream = New FileStream("C:\Arch.bin", FileMode.OpenOrCreate)
Dim ctr As Int32
Dim num As Byte 'UInt16
Dim n As String
Dim r As System.IO.BinaryReader = New System.IO.BinaryReader(fs)
For ctr = 0 To 10
'num = r.ReadUInt16
num = r.ReadByte()
n = Hex(
CInt(num))
Dim writer As IO.StreamWriter
writer = IO.File.AppendText("c:\myfile.txt")
writer.WriteLine(n)
writer.Close()
Next
 
Since I'm usin a loop to read the characters, is there a way to read all bytes in the file without a loop?
 
Yes
Put a while (True) loop and keep on going calling ReadByte (make sure to loop in a try catch block and handle the exception of EndOfStreamException i.e. when stream is over

While (Not endOFStream)
'num = r.ReadUInt16
Try
num = r.ReadByte()
Catch ex As EndOfStreamException
endOFStream =
True
End Try
....
...

However it is not a good idea to open and close the c:\myfile.txt for every byte, hope u're filling a array instead of writing single byte to the text file each time
 
what do i declare endOFSteam as? I am jus writin to a txt file now to check whether the values comply with my reference hexadecimal file. Will use an array in the end.
 
Back
Top