Read the hex file, convert to string and load into listBox

I want the listBox to display the identifiers stored in the file. Identifiers have a hexadecimal value.

I'm stuck trying to upload a file and convert HEX to ASCII, so listBox can load it. The file also contains additional information, such as element name, element level, etc.

Here is an example file:

00000000h: 50 12 00 00 2F D9 01 00 01 00 00 00 00 00 00 00 ; P.../Ù.......... 00000010h: 46 65 61 74 68 65 72 20 45 61 72 72 69 6E 67 00 ; Feather Earring. 00000020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000040h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000050h: 00 00 00 00 0A 00 00 00 07 00 02 00 00 00 00 00 ; ................ 00000060h: 00 00 00 00 00 00 00 00 00 00 00 00 B8 88 00 00 ; ............¸ˆ.. 00000070h: 00 0C 00 00 00 00 00 00 00 00 00 00 20 00 00 00 ; ............ ... 00000080h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000090h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000000a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000000b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000000c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000000d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000000e0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000000f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000100h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000110h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000120h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000130h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000140h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000150h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000160h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000170h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000180h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000190h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000001a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000001b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000001c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000001d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000001e0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000001f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000200h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000210h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000220h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000230h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000240h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000250h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000260h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000270h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000280h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000290h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000002a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000002b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000002c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000002d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000002e0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000002f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000300h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000310h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000320h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000330h: 02 00 00 00 00 00 00 00 4A 61 64 65 20 45 61 72 ; ........Jade Ear 00000340h: 72 69 6E 67 00 00 00 00 00 00 00 00 00 00 00 00 ; ring............ 00000350h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000360h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000370h: 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 ; ................ 00000380h: 07 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000390h: 00 00 00 00 20 A1 07 00 00 0C 00 00 00 00 00 00 ; .... ¡.......... 000003a0h: 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 ; .... ........... 000003b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000003c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000003d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000003e0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000003f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000400h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000410h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000420h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000430h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000440h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000450h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000460h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000470h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000480h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000490h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000004a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000004b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000004c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000004d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000004e0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000004f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000500h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000510h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000520h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000530h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000540h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000550h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000560h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000570h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000580h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000590h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000005a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000005b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000005c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000005d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000005e0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 000005f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000600h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000610h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000620h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000630h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000640h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 00000650h: 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 ; ................ 

Ignore “50 12 00 00 2F D9 01 00” at the beginning, that is, the version of the file and other irrelevant data, what I want to parse in listBox is the identifier of the element “01”, which is located immediately after the version of the file.

The next item identifier is in "00000330h" and the value is "02". Toward the end of the files, you can see that there is an identifier of "03" ...

EDIT:

OK, now I upload the file and read the “Element” section inside it, but I don’t know how to load identifiers into a listBox ... Identifiers are separated by 807 bytes, so every 807 bytes there is an identifier.

This is how I load the file section

  int itemSectionStart = 0x00000000; int itemSectionEnd = 0x002e11e0; FileStream fstream = new FileStream("C:\\Users\\xxx\\Desktop\\xxx\\xxx\\xxx.dec", FileMode.Open); BinaryReader breader = new BinaryReader(fstream); long length = fstream.Length; breader.BaseStream.Position = itemSectionStart; byte[] itemSection = breader.ReadBytes(itemSectionEnd); 
+6
source share
3 answers

I finally got what I was looking for! Here is the approach I took to make it work: (maybe not very pretty, but it works!)

 private string hex2dec(string hexString) { StringBuilder sb = new StringBuilder(); sb.Append(long.Parse(hexString, System.Globalization.NumberStyles.HexNumber)); return sb.ToString(); } private void button1_Click(object sender, EventArgs e) { int numRecords = 3737; int itemSectionStart = 0x00000008; int itemSectionEnd = 0x002e11ec; using (FileStream str = File.OpenRead("C:\\Users\\xxx\\Desktop\\xxx\\xxx\\xxx.dec")) { BinaryReader breader = new BinaryReader(str); breader.BaseStream.Position = itemSectionStart; byte[] itemSection = breader.ReadBytes(itemSectionEnd); int j = 0; int k = j++; for (int i = 0; i < numRecords; i++) { string id = BitConverter.ToString(itemSection, 808 * k++, 7); string[] strArrayID = id.Split(new char[] { '-' }); string reversedID = strArrayID[6] + strArrayID[5] + strArrayID[4] + strArrayID[3] + strArrayID[2] + strArrayID[1] + strArrayID[0]; listBox1.Items.Add(this.hex2dec(reversedID)); } } } 
+1
source

Assuming you know how to find the identifiers you want in the file and know their width (for example, you know that each of them contains 4 bytes containing Int32), you can use C # BitConverter , which takes a byte array and index and returns you the corresponding number type. You may need to swap if the problem is with the entity.

Read your file in an array of bytes, use BitConverter at each offset you care about, convert the numbers to strings, and load your ListView.

 int startIndex = 8; int recordStride = 128; int numRecords = 4; using (FileStream str = File.OpenRead("myfile.ext")) { for (int i = 0; i < numRecords; i++) { byte[] data = new byte[4]; str.Seek(startIndex + recordStride * i, SeekOrigin.Begin); str.Read(data, 0, 4); if (NeedToByteSwap) Array.Reverse(data); int id = BitConverter.ToInt32(data, 0); AddToListView(id.ToString()); } } 

Fill in or specify the initial parameters as necessary.

+2
source

It doesn’t sound like Hex-formatted data - it is more like what the editor provided. Instead, it seems more likely that the file is a direct binary dump with text encoded as an ASCII byte stream.

In this case, you need to highlight the range of bytes [] that represents the characters (is there a clear definition of what restricts entries, names, etc.?). Submit this to System.Text.ASCIIEncoding (http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx)

One of the GetString overloads converts a range of bytes into ASCII text. (Http://msdn.microsoft.com/en-us/library/744y86tc.aspx)

0
source

Source: https://habr.com/ru/post/914471/


All Articles