gpt4 book ai didi

c - 在二进制数据中搜索文本

转载 作者:行者123 更新时间:2023-11-30 16:17:20 24 4
gpt4 key购买 nike

我有一个包含文本的二进制数据。文字是已知的。搜索该文本的快速方法是什么:

举个例子。

This is text 1---!@##$%%#^%&!%^$! <= Assume this line is 3 MB of binary dataNow, This is text 2 ---!@##$%%#^%&!%^$! <= Assume this line is 2.5 MB of binary dataThis is text 3 ---

How can I search for text This is text 2.

Currently I'm doing like:

size_t count = 0;
size_t s_len = strlen("This is text 2");

//Assume data_len is length of the data from which text is to be found and data is pointer (char*) to the start of it.
for(; count < data_len; ++count)
{
if(!memcmp("This is text 2", data + count, s_len)
{
printf("%s\n", "Hurray found you...");
}
}
  • 有没有其他更有效的方法来做到这一点
  • 将取代 ++count logicmemchr('T') logic help <= 如果此语句不清楚,请忽略
  • memchr 的平均情况大 O 复杂度应该是多少

最佳答案

标准 C 中没有任何东西可以帮助您,但有一个 GNU 扩展 memmem()这样做是这样的:

#define TEXT2 "This is text 2"

char *pos = memmem(data, data_len, TEXT2, sizeof(TEXT2));

if (pos != NULL)
/* Found it. */

如果您需要移植到没有此功能的系统,您可以采用 memmem()glibc 实现并将其合并到您的程序中。

关于c - 在二进制数据中搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56282586/

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