概述
最近研究人脸识别,需要用python调用so动态库,涉及到c/c++中的指针字符串转Python的bytes对象的问题。
按照ctypes的文档,直观方式是先创建对应的类型数组,再将指针取地址一一赋值:
from ctypes import *
p=(c_char * 10)()
for i in range(10):
p[i] = i
b=bytes(bytearray(p))
print(b)
from ctypes import *
p=(c_char * 10)()
for i in range(10):
p[i] = i
b=bytes(bytearray(p))
print(b)
搜寻了各种资料,都未能找到更好的。。。直到ctypes.string_at
_string_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_string_at_addr)
def string_at(ptr, size=-1):
"""string_at(addr[, size]) -> string
Return the string at addr."""
return _string_at(ptr, size)
_string_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_string_at_addr)
def string_at(ptr, size=-1):
"""strin
最后
以上就是飞快黄蜂为你收集整理的python const char_[Python]关于ctypes使用char*指针与bytes相互转换的问题的全部内容,希望文章能够帮你解决python const char_[Python]关于ctypes使用char*指针与bytes相互转换的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复