gpt4 book ai didi

dart - 如何在Dart中的二进制文件中搜索文本

转载 作者:行者123 更新时间:2023-12-03 04:40:41 27 4
gpt4 key购买 nike

我试图在dart中搜索文件的二进制数据,以找到子字符串的索引。我有工作的js代码,但无法将其转换为dart。这是js片段:

var rp = require('request-promise');

async function test(){
const uri = "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4"
const result = await rp({ uri });
const position = Buffer.from(result).indexOf('dnlu');
console.log(position);
}

test() //outputs 2631582
此功能的 Dart 等效功能是什么?

最佳答案

您通常会以Uint8List的形式获取字节。
Dart Uint8List没有可用于子列表的indexOf方法,因此,您必须通过搜索来搜索老式的方式。
我假设字节代表UTF-8或Latin-1字符,并且由于您的字符串仅包含ASCII,因此您可以直接搜索代码单位。
也许您可以添加如下内容:

extension IndexOfListExtension<T> on List<T> {
int indexOfAll(List<T> needle, [int start = 0]) {
if (needle.length == 0) return start;
var first = needle[0];
var end = this.length - needle.length;
for (var i = start; i <= end; i++) {
match:
if (this[i] == first) {
for (var j = 1; j < needle.length; j++) {
if (this[i + j] != needle[j]) break match;
}
return i;
}
}
return -1;
}
}
然后,您将可以执行以下操作:
  var bytes = await fetch_the_bytes(uri); // However you want to do this.
var position = bytes.indexOfAll("dnlu".codeUnits);
...

关于dart - 如何在Dart中的二进制文件中搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63319174/

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