代码之家  ›  专栏  ›  技术社区  ›  ch271828n

在Dart代码中编码二进制blob的最简单方法是什么?

  •  0
  • ch271828n  · 技术社区  · 4 年前

    我需要在Dart代码中编码一些二进制blob(比如100KB)。不想把它放在单独的文件中,但希望能把它放进去 .dart 代码(例如,因为我想要出色的flutter热重启,而不是在文件更改时一次又一次地重建flutter应用程序)。

    最简单的方法是什么?

    例如,我可以想出 final bytes = [100, 70, 220, 132, ...]; 但它会使 飞奔 文件巨大。

    我也可以 final data = 'aGVsbG8...' 并由使用 base64.decode(data) ,但它在生成的二进制文件中占用了33%的额外空间。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Ben Konyi    4 年前

    不幸的是,这些都是您的选择,因为无法从文件中导出二进制数据(例如,直接生成 .o 以C/C++导出符号的文件),而不使用Dart列表或某种其他形式的编码。

    但是,如果您正在处理固定的二进制数据表示,我强烈建议您查看中提供的类型 dart:typed_data 以确保有效地将这些数据存储在内存中(例如,使用 UInt8List vs List<int> 将使用每个元素8位,而不是可以由表示的64位 int )。