2010-06-02 6 views
2

intelHex 파일에서 이진 파일을 만들려고합니다. Iside는 intelHex 파일입니다. 이진 파일 안에 데이터를 써야하는 데이터와 주소가 있습니다. 마지막은 우리가 파일의 끝 이잖아 알 수 있기 때문에 그IntelHex에서 C#으로 이진 파일 만들기

:10010000214601360121470136007EFE09D2190140 
:100110002146017EB7C20001FF5F16002148011988 
:10012000194E79234623965778239EDA3F01B2CAA7 
:100130003F0156702B5E712B722B732146013421C7 
:00000001FF 

그래서 내가 데이터를 여기에 4 개 라인을 가지고있는 것처럼 IntelHex 파일을 찾습니다. 여기 내가 여기에 파일

 while (!streamReader.EndOfStream) 
     { 
      string temp = String.Empty; 
      int address = 0; 
      line = streamReader.ReadLine(); 
      // Get address for each data 
      address = Convert.ToInt32(line.Substring(3, 4), 16); 
      // Get data from each line 
      temp = line.Substring(7, 2); 
      if (temp == "01") 
       break; 
      else 
      { 
       temp = line.Substring(9, line.Length - 11); 
       string[] array = new string[(temp.Length/2)]; 
       int j = 0; 
       for (int i = 0; i < array.Length; ++i) 
       { 
        array[i] = temp[j].ToString() + temp[j + 1].ToString(); 
        j = j + 2; 
       } 
       temp = String.Empty; 
       for (int i = 0; i < array.Length; ++i) 
       { 
        temp = temp + Convert.ToChar(Convert.ToInt32(array[i], 16)); 

       } 
      } 
      binaryWriter.Seek(address, SeekOrigin.Begin); 
      binaryWriter.Write(temp); 
      binaryWriter.Flush(); 
     } 
     Console.WriteLine("Done...\nPress any key to exit..."); 

에게 문제를 만들하고있어 무엇을, 어떤 장소에서 이진 파일의 데이터는 intelHex 파일의 데이터와 동일하지 않습니다. 파일에 임의의 데이터가 추가 된 것처럼 보입니다. 어디에서 왔는지 모릅니다. 처음에는 intelHex 파일의 데이터 앞에 추가 데이터가 있다는 것을 보았습니다. 예를 들어, 첫 번째 데이터 라인은 21로 시작하지만 이진 파일에서는 21 전에 숫자 12가 있습니다. 여기서 무엇이 잘못되었는지는 알 수 없습니다. 누군가 나를 도울 수 있거나 C#에서 바이너리 파일을 만드는 데 유용한 정보를 찾을 수있는 곳으로 안내해 줄 수 있기를 바랍니다.

+0

보고있는 임의의 데이터는 무엇입니까? (어쩌면 스크린 인쇄) – KevinDTimm

답변

2

< 유니 코드 문자 (char)가 옥텟 (바이트) 이진 데이터가 유니 코드 문자열로 파일에 쓰여지기 때문에 잘못된 출력. >

힌트 : 문자열이 아닌 이진 데이터에 대해 byte []를 사용하십시오.

기타 : 루프에서 StringBuilder를 사용하라는 답변이 있습니다.

+0

감사합니다. 이제 어떻게 작동해야합니까? – Allek