复制python字符串字符到array.array(稍后从C++访问)?

8xiog9wr  于 2022-12-20  发布在  Python
关注(0)|答案(2)|浏览(128)

如何将python字符串复制到array.array

from array import array
b  = array('b', [0]*30)
s = 'abc'
# What should one do here to copy integer representation of 's' characters to 'b' ?

s字符的整数表示应该对C有意义:也就是说,如果我把b中的整数转换成Cchar字符串,我应该会得到“abc”。
下面是我的最佳想法(但最好避免显式的python循环):

for n,c in enumerate(s): b[n] = ord(c)

非常感谢您的帮助!

wj8zmpe1

wj8zmpe11#

请尝试将其清除并再次填充:

for i in range(29,-1,-1):
    b.pop(i)
len0s = 29 - len(s)
s_lst = [*s]+['\0']+[0]*len0s
b.fromlist(s_lst)

如果s少于30个字符,则应有效
https://pythongeeks.org/python-array-module/中的数组方法

v2g6jxz6

v2g6jxz62#

如果提前填充了30字节数组,则可以执行此操作:

b = array('b', bytes(s, 'utf-8') + b[len(s):])

或者,如果您想从头开始:

b = array('b', bytes(s, 'utf-8') + b'\0' * (30 - len(s)))

或者使用struct模块:

struct.pack_into('30s', b, 0, bytes(s, 'utf-8'))

相关问题