我有一个包含要加载到应用程序中的信息的文件。该文件有一些标题信息作为字符串,然后是多个以“;”结尾的条目一些条目用于不同的类型,因此长度是可变的,但所有变量都用“,”分隔
例子:
\Some heading
\Some other heading
I,003f,3f3d00ed,"Some string",00ef,
0032,20f3
;
Y,02d1,0000,0000,"Name of element",
00000007,0,
00000000,0,
;
Y,02d1,0000,0000,"Name of element",30f0,2d0f,02sd,
00000007,0,
00000000,0,
;
I 是一种元素Y 是另一种类型的元素
我想要实现的是,将元素带入不同的结构中以进行处理。大多数值是数字,但有些是字符串。
我能够实现的是:
这似乎不是要走的路,因为我从字节开始,将它们分配为字符串,然后再次为大多数值分配数字。
所以我的问题是:
我可以将 Vec
我认为将字节直接应用于正确的数据类型会更高效。还是我的担心是错误的?
最佳答案
Can I split the Vec into multiple vectors separated by ';' (byte 59), split these further by '\n' and split this further by ','.
如果其他字节可能出现在其他地方,例如嵌入在字符串中,通常这将不起作用。
然后还有字符串如何编码的问题,是否有转义序列等等。
I assume it would be more performant to apply the bytes directly to the correct data-type. Or is my concern wrong?
将整个文件读入内存,然后从一个
Vec
执行多个副本到另一个 Vec
另一个等等将比使用某种状态机的单次传递慢。更不用说它会使处理大于内存的文件变得极其缓慢或不可能。在您拥有可工作的算法之前,我不会担心性能,特别是如果您必须使用未记录的、非平凡的第三方格式并且您没有阅读二进制格式的经验。
关于Rust 按特定字节拆分字节向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64938809/