我对C#相当陌生,需要将uksort($array1, function($a, $b)use($array2) {
foreach($array2 as $value){
if($a == $value){
return 0;
break;
}
if($b == $value){
return 1;
break;
}
}
});
(digital tachograph输出文件扩展名)转换为.ddd
。
作为第一步,我应该阅读文件,所以我正在查看示例。我发现的每个信息源都在阅读文件时使用基于.xml
的示例。我的示例中的文件类型.txt
远不及那个。
我正在考虑二进制阅读,但也不确定。这是正确的方法是什么?
答案 0 :(得分:4)
答案非常晚,但此库位于C#中,支持数字行车记录仪规格的大部分内容。
https://github.com/jugglingcats/tachograph-reader
这个库提供了两个类,可以读取驱动程序和车载卡二进制文件并写入XmlWriter。 XML结构良好,可以清楚地表示二进制文件的内容,以便后续处理。请注意,代码不会检查文件中的数字签名。
自述文件:
用法非常简单。有一个主类DataFileReader和两个子类:VehicleUnitDataFile和DriverCardDataFile。您可以使用以下方法创建其中一个子类的实例:
Clothes
一旦你有了一个阅读器实例,你可以给它一个二进制文件来阅读和一个XML Writer:
DataFile vudf=VehicleUnitDataFile.Create();
DataFile dcdf=DriverCardDataFile.Create();
两种数据文件格式的大多数部分/功能都可以满足。可以使用DriverCardData.config和VehicleUnitData.config修改数据文件格式。这两个XML文件定义了具有特定于标准的功能的数据结构(例如循环缓冲支持)。
答案 1 :(得分:3)
要执行转换,您需要知道:
从文件中读取二进制数据非常简单 - BinaryReader
具有访问数据的各种方法,特别是如果可以在单个正向传递中处理数据(似乎是这种情况)。那里有很多BinaryReader
个例子。
更重要的是了解数据的含义。值为0x20
的单个字节可能意味着:
32
UInt16
的第一个字节如果没有关于每个位置的每个字节的含义的信息,那么您将无法获得任何结果。
然后使用该信息,并将文件读入某些拟合类,转换为Xml可以像将类传递给XmlSerializer
一样简单。
答案 2 :(得分:0)
也有现成的解决方案,例如ReadESM(https://sourceforge.net/projects/readesm/files/)或DDD2XML(https://rs.canlab.cz/?q=en/node/154)。 DDD2XML还支持第二代转速表。