【问题标题】:Translating Python to C将 Python 翻译成 C
【发布时间】:2019-12-26 15:11:02
【问题描述】:

我有一个重要的项目要写但是有一个问题:我必须从 Python 用 C 语言来写(我绝对不了解 Python..)

我已经翻译了将近 70% 的代码,但是由于一行代码我无法完成,所以我真的希望有人帮助我..

这是有问题的行:

define1 = '\x0F\x10\x20\xD6'

def function(file):
  if file[i:i+4] == define1:
    [...]

file 应该是二进制文件),我绝对不知道如何用 C 语言编写这个file[i:i+4](我假设它可以使用数组和指针来完成,但仅此而已......) .

提前致谢。

【问题讨论】:

  • 您正在处理切片。 file[i:i+4] 在位置 i 处提取长度为 4 的子数组。您不需要在 c 中提取它,因此您可以比较内存区域而无需将其提取到额外的变量 if(memcmp(file + i, define1, 4) == 0)
  • 以后请努力写出更好的标题。要求翻译代码的问题一直被关闭和删除,起初您的问题可能似乎属于该类别。但是你知道你想问什么:“我绝对不知道如何用 C 语言编写这个 file[i:i+4]”。我怀疑你可以从那里想出一个更好的标题。
  • 谢谢!!对不起,这是最后一个问题:我必须像binary[:i] + file[i:i+4] + define1一样添加它,这里的翻译是什么?

标签: python c arrays intervals language-translation


【解决方案1】:

我没有足够的声誉来添加评论,但可以帮助回答您的问题

binary[:i] + file[i:i+4] + define1

当您看到 list_name[:number] 时,它仍在切片,但是当您没有看到起始索引时,这意味着从头开始,并在列表中的某个索引处结束。它停止的索引被排除在外。

所以这一行所做的只是创建一个长二进制文件。比如……

x = b'1001'
y = b'0110'
z = b'0111'

# takes the first two bits of x, the two middle bits of y, and all of the bits of z.
x[:2] + y[1:3] + z = b'10110111'

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2017-10-12
    • 1970-01-01
    相关资源
    最近更新 更多