2012-04-29 11 views
6

मैं सूची बॉक्स को फ़ाइल में संग्रहीत आईडी प्रदर्शित करना चाहता हूं। आईडी हेक्साडेसिमल मान में हैं।हेक्स फ़ाइल पढ़ें, स्ट्रिंग में कनवर्ट करें और सूची में लोड करेंबॉक्स

मैं फ़ाइल लोड करने और HEX को ASCII में परिवर्तित करने की कोशिश कर रहा हूं, इसलिए सूची बॉक्स इसे लोड कर सकता है। फ़ाइल भी वस्तु का नाम, आइटम स्तर, और इस तरह की तरह, कुछ अधिक जानकारी शामिल है ...

यहाँ फ़ाइल का एक नमूना है:

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 ; ................ 

ध्यान न दें "50 12 00 00 2F D9 01 00 "भिखारी पर, यह फ़ाइल संस्करण और अन्य अप्रासंगिक डेटा है, जो मैं सूची में पार्स करना चाहता हूं बॉक्स आइटम आईडी" 01 "है जो फ़ाइल के संस्करण के ठीक बाद है।

अगला आइटम आईडी "00000330h" पर है और मान "02" है। फ़ाइलों के अंत में आप देख सकते हैं कि वहाँ आईडी "03" ...

संपादित करें:

ठीक है, अब मैं फ़ाइल लोड कर रहा हूँ और इसके अंदर आइटम के खंड को पढ़ने, लेकिन मैं सूची में आईडी लोड करने के लिए कोई संकेत नहीं हैबॉक्स ... आईडी एक दूसरे से 807 बाइट्स से अलग हो जाते हैं, इसलिए प्रत्येक 807 बाइट्स एक आईडी है।

यहाँ कैसे मैं फ़ाइल के खंड

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); 
+0

यह बहुत क्रेडिट :) –

+0

के टन के साथ खेल फ़ाइलें और होने इलीट बचाने पीसी की मुझे याद दिलाता है haha ​​हाँ , यह ऐसा कुछ है: पी –

+0

समझ में नहीं आता है कि आप हेक्स को एएससीआई रूपांतरण क्यों चाहते हैं?क्या यह हेक्स डंप कुछ हेक्स दर्शक में फ़ाइल की दृश्य प्रस्तुति है? –

उत्तर

1

आखिरकार जो मैंने खोजा था उसे पूरा किया! यहाँ दृष्टिकोण मैं इसे काम करने के लिए ले लिया है: (सुंदर नहीं हो सकता है, लेकिन यह काम करता है!)

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)); 
     } 
    } 
} 
+0

मुझे यकीन नहीं है कि मैं हेक्स स्ट्रिंग के रूप में इसका इलाज करने के साथ आपके निर्धारण को समझता हूं। क्या आप कहीं और हेक्स स्ट्रिंग का उपयोग करना चाहते हैं? आपका टेक्स्ट एडिटर आपके डेटा को हेक्स में आपके लिए सुविधा के रूप में प्रदर्शित करता है, लेकिन अंतर्निहित आईडी डेटा में हेक्स या ASCII के साथ कुछ लेना देना नहीं है। यदि आपका कोड काम कर रहा है, तो यह बहुत अच्छा है, लेकिन मुझे लगता है कि आप वास्तव में करने की ज़रूरत के मुकाबले बहुत अधिक काम कर रहे हैं। –

+0

यदि यह तोड़ा नहीं गया है, तो इसे ठीक न करें यह मेरे लिए ठीक काम कर रहा है। –

2

लोड हो रहा हूँ मान लिया जाये कि आप जानते हैं कि आईडी आप फ़ाइल में चाहते हैं पता लगाने के लिए कैसे है, और आप उनकी चौड़ाई पता (जैसे आप जानते हैं कि वे शामिल प्रत्येक 4 बाइट रहे एक इंट 32), आप सी # की BitConverter कक्षा का उपयोग कर सकते हैं, जो एक बाइट सरणी और एक सूचकांक लेता है और आपको इसी संख्यात्मक प्रकार को वापस देता है। अगर अंतहीनता एक मुद्दा है तो आपको चीजों को स्वैप करना पड़ सकता है।

अपनी फ़ाइल को बाइट सरणी में पढ़ें, प्रत्येक ऑफसेट पर बिटकॉन्टर का उपयोग करें, जिस पर आप परवाह करते हैं, संख्याओं को तारों में कनवर्ट करें, और अपनी सूची दृश्य लोड करें।

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()); 
    } 
} 

आवश्यकतानुसार अपने प्रारंभिक पैरामीटर भरें या गणना करें।

+0

धन्यवाद! मैंने आपके कोड को आधार के रूप में इस्तेमाल किया जो मैं चाहता था। –

0

डेटा इतना है कि डेटा हेक्स प्रारूप में नहीं है - ऐसा लगता है कि संपादक ने आपको केवल इतना प्रतिनिधित्व दिया है। इसके बजाए ऐसा लगता है कि फ़ाइल एएससीआईआई बाइट स्ट्रीम के रूप में एन्कोड किए गए पाठ के साथ एक सीधी बाइनरी डंप है।

इस मामले में आप एक बाइट [] रेंज को अलग करना चाहते हैं जो वर्णों का प्रतिनिधित्व करता है (क्या रिकॉर्ड, नाम आदि के बारे में स्पष्ट परिभाषा है?)। System.Text.ASCIIEncoding (http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx)

GetString भार के में से एक के लिए फ़ीड कि ASCII के लिए बाइट रेंज में परिवर्तित कर देंगे पाठ। (http://msdn.microsoft.com/en-us/library/744y86tc.aspx)

+0

आईडी एक दूसरे से अलग 807 बाइट्स हैं और बीच में प्रत्येक आइटम के बारे में अन्य डेटा है। मान हेक्स में हैं, लेकिन वे "उलट" हैं, इसलिए फ़ाइल "32 डीएफ 14 3 सी" रिवर्स हेक्स मान प्रदर्शित करेगी, जो वास्तव में "3 सी 14 डीएफ 32" है और दशमलव रूप में "1008000818" में अनुवाद करेगी। –

संबंधित मुद्दे