将CSV文件导入文本框但未正确格式化

时间:2014-12-23 15:44:37

标签: c# csv hex

我想将包含Hex值的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++;
                        }
                 }

2 个答案:

答案 0 :(得分: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);

应该有所帮助......

答案 1 :(得分:0)

更改hex.Split(',');到

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