首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纠结于memset

纠结于memset
EN

Stack Overflow用户
提问于 2016-12-15 18:05:35
回答 1查看 424关注 0票数 0

我希望有一个像函数一样的指针。因为我只能将int作为参数传递,而我希望能够将所有类型的数据传递给一个函数。(我不能修改这个函数,它是在SDK中硬编码的)

所以我想使用一个变量的id,然后将这个值重新赋值给我的函数中的另一个值。

我希望有这样的人在工作

代码语言:javascript
复制
import ctypes

a = 10
b = 12
print b #here I want 12

ctypes.memset(id(b), a, 8)
print b #here I want 10

使用python类型可能性很大,这样我也可以传递一个可调用的对象。

EN

回答 1

Stack Overflow用户

发布于 2016-12-15 18:20:02

更新:

因为主线程和后台线程在同一个程序上并且共享内存。您可以使用单个字典来创建用于存储变量及其键的容器:

代码语言:javascript
复制
import random

mystorage = {}


def getint(value):
    while True:
        key = random.randint(0, 0xffffffff)
        if key in mystorage:
            continue
        mystorage[key] = value
        return key


def getvalue(key):
    return mystorage.get(key)

在根据您的情况测试密钥是否冲突时,您可能需要添加写锁。但通常情况下,这对多线程程序很有效。

这只是一个使用int (实际上是long)类型来传递任何可拾取对象的想法:

代码语言:javascript
复制
import codecs
import pickle


def dumps(payload):
    data = pickle.dumps(payload)
    return int(codecs.encode(data, 'hex'), 16)


def loads(intval):
    data = codecs.decode(hex(intval)[2:].encode('ascii'), 'hex')
    return pickle.loads(data)


assert loads(dumps({'foo': 'bar'})) == {'foo': 'bar'}
# no error

如果你正在使用Python 3.2+,你也可以使用int.from_bytes()int.to_bytes()来实现这一点。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41161396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档