C代码返回一个128位(已定义GCC),我需要读取此值

唐·皮亚诺

我可以从C库成功调用函数。C代码如下所示:

{
  void return128bit(*data);
}

我需要传递一个指向128位整数的指针,但是我不确定如何执行此操作。我看到的其他答案都来自Python2,要么不起作用,要么不完全是我所需要的。

我曾尝试在Python中制作一个128位的结构,例如将c类型用于2个条目的64位数组,然后我将指针做成:

class c_uint128(Structure):
    _fields = [
        ('value', c_uint64 * 2)
    ]

    def __init__(self, number = 0):
        super(c_uint128, self).__init__(number)

我没有尝试将其传递给我,因为我什至无法做一些基本的事情,例如在python中初始化128位结构。我从另一个(已有6年以上历史的答案)中发现初始化函数不再起作用,并且出现错误消息TypeError: too many initializers.

我真正需要做的就是调用C函数并读取它指向的值。如果我还可以为其分配一个128位的值,那就太好了。

编辑:我也无法通过执行将c_uint128类型转换为指针

data = c_uint128()
datap = c_void_p(data)
TypeError: cannot be converted to pointer
唐·皮亚诺
class c_uint128(Structure):
    _fields = [
        ('value', c_uint64 * 2)
    ]

    def __init__(self, number = 0):
        super(c_uint128, self).__init__(number)

我意识到_fields应该是_fields_,它本身导致了很多问题。有了这个,我可以通过添加一些方法来弄清楚如何将其用作128位:

class c_uint128(Structure):
    _fields_ = [
        ('int128', c_uint64 * 2)
    ]

    def __init__(self, number = 0):
        self.int128[0] = number & 0xffffffffffffffff           #lower 64 bits
        self.int128[1] = (number >> 64) & 0xffffffffffffffff   #upper 64 bits

    def __str__(self):
        return str((self.int128[1] << 64) | self.int128[0])

    def value(self):
        return (self.int128[1] << 64) | self.int128[0]

使用self.value()覆盖算术运算符以将其转换为常规python int使其更容易使用。

要将其传递给ac函数,我必须使用byref():

def return128bit(data):
    lib.return128bit(byref(data)

data = c_uint128(41243)
return128bit(data)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何定义一个使用 Python 读取并返回列表中所有值的函数?

来自分类Dev

需要读取多个节点的值:ORA-19025:EXTRACTVALUE仅返回一个节点的值

来自分类Dev

我的代码返回了一个值而不是一个向量

来自分类Dev

我需要编写一个 post api,它返回 201 作为我的 http 代码。爪哇

来自分类Dev

我需要在C#上显式声明一个Dictionary以获取模拟返回值

来自分类Dev

此C代码是否已定义行为?

来自分类Dev

我正在返回一个承诺并收到:无法读取未定义的属性“then”

来自分类Dev

此代码是否违反一个定义规则?

来自分类Dev

为什么此定义返回一个函数?

来自分类Dev

我需要一个函数根据变量返回RGBA值

来自分类Dev

我需要定义一个函数来输入一个值然后调用该函数并打印它

来自分类Dev

c ++ udp广播。我需要一个套接字来读取和另一个发送吗?

来自分类Dev

我如何向打字稿解释一个函数检查了一个字段是否已定义?

来自分类Dev

Mongo C#JSON读取器原本需要一个值,但发现'replSetGetStatus'

来自分类Dev

我需要从函数返回QHash值,我在Qt中测试此代码,错误在哪里

来自分类Dev

脚本中的 VB 错误,我运行此代码应输出 2 位后缀,但有一个用户生成 3 位后缀

来自分类Dev

我的代码在它应该有值时返回一个充满零的列表

来自分类Dev

我的函数在内部类中的代码完成之前返回一个值

来自分类Dev

我的代码为输入框返回一个空值

来自分类Dev

如何让我的代码在最后输出一个格式化的值,并将它放在一个函数中,并带有一个返回值?

来自分类Dev

JS- toFixed返回一个字符串,但是我需要一个数字到6位数字

来自分类Dev

为什么当我有多个结果时,此powershell代码仅返回一个结果?

来自分类Dev

当我只需要返回一个值时,是否需要v8 HandleScope?

来自分类Dev

这个 C 代码是如何工作的,但另一个说需要 L 值?

来自分类Dev

我需要知道一个 javascript 代码

来自分类Dev

左连接,我需要一个关于代码的解释

来自分类Dev

我需要一个简单的导航栏 css 代码

来自分类Dev

如果一个函数需要一个返回值,但是在函数内部,我捕获了一个错误并想中断

来自分类Dev

这段代码会重复一个值吗?我需要一个永远不会重复的数字,并且不需要存储的变量

Related 相关文章

  1. 1

    我如何定义一个使用 Python 读取并返回列表中所有值的函数?

  2. 2

    需要读取多个节点的值:ORA-19025:EXTRACTVALUE仅返回一个节点的值

  3. 3

    我的代码返回了一个值而不是一个向量

  4. 4

    我需要编写一个 post api,它返回 201 作为我的 http 代码。爪哇

  5. 5

    我需要在C#上显式声明一个Dictionary以获取模拟返回值

  6. 6

    此C代码是否已定义行为?

  7. 7

    我正在返回一个承诺并收到:无法读取未定义的属性“then”

  8. 8

    此代码是否违反一个定义规则?

  9. 9

    为什么此定义返回一个函数?

  10. 10

    我需要一个函数根据变量返回RGBA值

  11. 11

    我需要定义一个函数来输入一个值然后调用该函数并打印它

  12. 12

    c ++ udp广播。我需要一个套接字来读取和另一个发送吗?

  13. 13

    我如何向打字稿解释一个函数检查了一个字段是否已定义?

  14. 14

    Mongo C#JSON读取器原本需要一个值,但发现'replSetGetStatus'

  15. 15

    我需要从函数返回QHash值,我在Qt中测试此代码,错误在哪里

  16. 16

    脚本中的 VB 错误,我运行此代码应输出 2 位后缀,但有一个用户生成 3 位后缀

  17. 17

    我的代码在它应该有值时返回一个充满零的列表

  18. 18

    我的函数在内部类中的代码完成之前返回一个值

  19. 19

    我的代码为输入框返回一个空值

  20. 20

    如何让我的代码在最后输出一个格式化的值,并将它放在一个函数中,并带有一个返回值?

  21. 21

    JS- toFixed返回一个字符串,但是我需要一个数字到6位数字

  22. 22

    为什么当我有多个结果时,此powershell代码仅返回一个结果?

  23. 23

    当我只需要返回一个值时,是否需要v8 HandleScope?

  24. 24

    这个 C 代码是如何工作的,但另一个说需要 L 值?

  25. 25

    我需要知道一个 javascript 代码

  26. 26

    左连接,我需要一个关于代码的解释

  27. 27

    我需要一个简单的导航栏 css 代码

  28. 28

    如果一个函数需要一个返回值,但是在函数内部,我捕获了一个错误并想中断

  29. 29

    这段代码会重复一个值吗?我需要一个永远不会重复的数字,并且不需要存储的变量

热门标签

归档