【问题标题】:Memset() in Python, clearing bufferPython中的Memset(),清除缓冲区
【发布时间】:2021-03-02 14:47:53
【问题描述】:

我尝试将一些 C 代码转换为 Python,但在清除缓冲区(将由 UDP 发送的数据)时遇到问题。要转换的函数如下所示:

void func(Struct *data_1, Struct *data_2)
{
    data_p1 = data_1;
    data_p2 = data_2;
    memset(datap1, 0, sizeof(*data_p1));
    memset(datap2, 0, sizeof(*data_p2));
}

我不得不问,我不知道如何替换 c 指针,这对替换它们至关重要。第二个问题是memset,我知道是ctype,但我不知道如何正确使用它。有人可以帮忙吗?

【问题讨论】:

  • 此代码用零填充(初始化)结构的值。我不认为将代码从字面上转移到 python 中是值得的,其中的对象可以用另一种方式初始化,例如,在__init__ 或只是赋值

标签: python c pointers memset


【解决方案1】:

在不同语言之间转换代码时,永远不要尝试在表达式级别进行转换,而是想知道代码实际上在做什么。这里 C 代码将结构的内容设置为 NULL 字节。 Python中没有直接的等价物,句号。更接近的等效方法是将 Python 对象的所有对象属性设置为 None,将整数设置为 0,将浮点数设置为 0.0。

【讨论】:

  • 好的,我想我明白了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2017-01-26
  • 2012-10-12
  • 1970-01-01
  • 2016-08-18
  • 2020-04-11
相关资源
最近更新 更多