试图理解 Python(翻译成 C)

Attempting to understand Python (for translation to C)

[现在关闭主题,最后没用的主题]

那些是 "slices",而 + 只是将它们连接起来。这是最简单的切片情况,[start:end] 创建一个序列的子序列,从位置 start 开始,包括位置 end,结束于位置 end,不包括。如果其中一个缺失(但 : 存在),则认为它是完整序列的 beginning/end。指数是从零开始的。
字符串示例:

  • 'Hello World'[1:5]: 'ello'
  • 'Hello World'[:5]: 'Hello'
  • 'Hello World'[1:]: 'ello World'
  • 'Hello World'[:1]+'Hello World'[5:]: 'H World'

你的循环以 4 字节的步长遍历你的数据,将当前位置的 4 字节块与你在 ROB 中的序列进行比较,它 returns 一个没有当它被发现时(所以 f=... 部分实际上并没有修改现有的序列)。
在 C 中,您可以使用 memcmp,然后使用 malloc 和一对 memcpy 调用,因为您正确地注意到此数据是二进制的(包含空字符),因此字符串函数将可能会破坏它。
希望我没有弄乱索引,然后它看起来像这样:

void* my_function(const void* f, int len){
  for(int i=0;i<len;i+=4)
    if(memcmp(f+i,ROB,4)==0){
      void* ret=malloc(len-4);
      memcpy(ret,f,i);
      memcpy(ret+i,f+i+4,len-i-4);
      return ret;
    }
  return NULL; // or have it die somehow
}