gpt4 book ai didi

Rust 按特定字节拆分字节向量

转载 作者:行者123 更新时间:2023-12-03 11:38:42 24 4
gpt4 key购买 nike

我有一个包含要加载到应用程序中的信息的文件。该文件有一些标题信息作为字符串,然后是多个以“;”结尾的条目一些条目用于不同的类型,因此长度是可变的,但所有变量都用“,”分隔
例子:

\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
  • 把它放在一个字符串中(不能直接这样做,因为我不感兴趣的元素中可能存在 UTF-8 问题)
  • 通过 ';' 将其拆分为 Vec<&str>
  • 根据类型将字符串传递给函数
  • 通过 '\n'
  • 将其拆分为 Vec
  • 通过 ',' 将其拆分为 Vec
  • 读出我需要的数据并从字符串中解释(例如 str::from_str_radix)
  • 构建结构并返回它

  • 这似乎不是要走的路,因为我从字节开始,将它们分配为字符串,然后再次为大多数值分配数字。
    所以我的问题是:
    我可以将 Vec 拆分为多个由 ';' 分隔的向量吗(字节 59),将这些进一步拆分为 '\n' 并进一步拆分为 ','。
    我认为将字节直接应用于正确的数据类型会更高效。还是我的担心是错误的?

    最佳答案

    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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com