读取文件为十六进制

时间:2014-01-25 17:58:39

标签: c# file-io hex

这是一个总的noob问题,我似乎无法找到答案。我有一个包含CAN帧的csv文件。框架看起来像这样。

0.10836,1,181,2,8,6d,3d,05,00,28,00,54,12,1

显然这是十六进制。如何从文件中将其作为十六进制读入C#而不是ASCII等效文件?

我尝试过像这样使用File.ReadAllBytes:

byte[] baFileLineArray = File.ReadAllBytes(sFileName);

然后调试输出如下:

foreach (byte ByteElement in baFileLineArray)
{
    if (ByteElement == 0x2c)
    {
        Console.Write(Environment.NewLine);
    }
    else
    {
        Console.Write("{0:x} ", ByteElement);
    }
} 

产生以下输出:

我需要将信息读取为十六进制而不是ASCII字符。所以例如,最后一个字段的第一个是0x12,最后一个的第三个是0x54。不是0x35 0x34。

非常感谢!!

2 个答案:

答案 0 :(得分:1)

  

我尝试过使用像这样的File.ReadAllBytes

这是第一个错误。这是文本文件 - 因此您应将其作为文本文件阅读。

老实说,如果它是CSV,你应该看看CSV解析器,它会让你的生活更简单,但你也可以自己做。类似的东西:

foreach (string line in File.ReadLines(filename))
{
    string[] part = line.Split(',');
    // Deal with each part. Consider using Convert.ToInt32(part, 16)
    // to parse a value as hex...
}

答案 1 :(得分:-1)

使用stringstream变量。 并在字符串缓冲区中获取一行文件信息 并转换为十六进制 用这个语法stramstringvari<