这是一个总的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。
非常感谢!!
答案 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<