2014-12-23 34 views
0

我想將包含十六進制值的CSV文件的內容添加到文本框並將每個字節輸出到列表框。將CSV文件導入到文本框但沒有正確格式化

單擊添加文件按鈕時,CSV文件的內容會顯示在文本框中,每個字節用逗號分隔,但是當我點擊寫入按鈕時,會引發異常。

「系統格式異常,其他不可分析的字符在字符串末尾」。

我不知道這是如何發生的,因爲當用逗號分隔的其他十六進制值輸入時,它工作得很好。格式在文本框中完全相同(例如AA,66,FF,EE),但似乎不適用於CSV文件?

private void AddFileSPI_Click(object sender, EventArgs e) 
    { 
     string AddFile = ""; 
     DialogResult result = openFile.ShowDialog(); 
     if (result == DialogResult.OK) 
     { 
      string file = openFile.FileName; 
      try 
      { 
       AddFile = File.ReadAllText(file); 
      } 
      catch (IOException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     Value.Text = AddFile; 
    } 


    private void Write_Click(object sender, EventArgs e) 
       { 
        string hex = Value.Text; 

         string[] hex1 = hex.Split(','); 
         byte[] bytes1 = new byte[hex1.Length]; 

         for (int j = 0; j < hex1.Length; j++) 
         { 
          bytes1[j] = Convert.ToByte(hex1[j], 16); 
          hexValues1.Add(bytes1[j]); 
          writebuff = hexValues1.ToArray(); 
          hexValue = writebuff[x].ToString("X2"); 
          WriteHexValues.Items.Add("0x" + hexValue); 
          x++; 
         } 
       } 
+0

也許您的CSV有一些數據不是十六進制值?把文件內容放在裏面,以便我們看到它。 – Gusman

+0

我自己在Excel中進行測試,只包含5個十六進制值AA,FF,66,DD,FF,這是我添加CSV文件時出現在文本框中的內容。 – john

+0

粘貼文件的確切內容。 Excel傾向於爲它添加一些標題,額外的信息,標題名稱等。 – Gusman

回答

0

變化hex.Split( '');到

hex.Split(",\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 
0

刪除空白:

for (int j = 0; j < hex1.Length; j++) 
{ 
    string fieldString = hex1[j].Trim(); 
    if(string.IsNullOrWhiteSpace(fieldString)) throw ... // or other error handling 
    bytes1[j] = Convert.ToByte(hex1[j], 16); 

應該幫助...