Python:将 ctypes_ubyte 数组转换为字符串

标签 python arrays ctypes

<分区>

我有一个 ctype 结构,我想打印一个我知道是字符串的字节数组。如何将此 ctypes.c_byte 数组转换为字符串?

from ctypes import *

class File(Structure):
  _fields_ = [("fileSize", c_uint),
        ("fileName", c_byte * 32)]

f = File()
print(f.fileSize)
print(f.fileName)

任何指针都会非常有帮助。提前致谢

最佳答案

如果字节数组的空索引被清零,你可以这样做:

print(''.join([chr(i) for i in f.fileName]).rstrip('\x00'))

或者,您可以使用 ctypes.c_char_p 而不是 ctypes.c_byte*32 在您的结构中拥有一个已经可打印的字符串。也可以通过 ctypes.castc_byte 数组转换为 c_char_p,例如

filename = ctypes.cast(f.fileName, ctypes.c_char_p)
print(filename.value) 

关于Python:将 ctypes_ubyte 数组转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291624/

相关文章:

python - 无法停止 Jupyter Notebook

python - C++ 排序代码到 python 排序

python - 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

java - 是否可以将字符串数组放入缓冲的阅读器中?

ruby-on-rails - 查找数组的每个子数组包含的值

python - 我们如何从 python 访问 PY_SSIZE_T_MAX 值?

对象池设计模式的 Python 实现

javascript - 基于对象创建数组

python - 在 python 中从浮点元组列表构建 c 数组的最快方法是什么?

c++ - 如何将c++程序编译成共享库以导入Python?