تحويل قائمة يطفو إلى عازلة في بيثون؟
-
22-07-2019 - |
سؤال
وأنا ألعب مع حولها بورت اوديو وبيثون.
data = getData()
stream.write( data )
وأريد بلدي تيار للعب البيانات الصوتية، التي تتمثل في القيم Float32. لذلك يمكنني استخدام الدالة التالية:
def getData():
data = []
for i in range( 0, 1024 ):
data.append( 0.25 * math.sin( math.radians( i ) ) )
return data
ومما يؤسف له أن لا يعمل بسبب stream.write
يريد كائن عازلة لتمريرها في:
TypeError: argument 2 must be string or read-only buffer, not list
ولذا سؤالي هو: كيف يمكنني تحويل قائمتي العوامات في لكائن عازلة
المحلول
import struct
def getData():
data = []
for i in range( 0, 1024 ):
data.append( 0.25 * math.sin( math.radians( i ) ) )
return struct.pack('f'*len(data), *data)
نصائح أخرى
والواقع، وأسهل طريقة هي استخدام البنية حدة . وهي مصممة لتحويل الأشياء من الثعبان إلى كائنات "الأم" C مثل.
والنظر ربما بدلا من ذلك:
d = [0.25 * math.sin(math.radians(i)) for i in range(0, 1024)]
وربما لديك لاستخدام حزمة مثل المخلل إلى تسلسل البيانات أولا.
import pickle
f1 = open("test.dat", "wb")
pickle.dump(d, f1)
f1.close()
وثم تحميله مرة أخرى في:
f2 = open("test.dat", "rb")
d2 = pickle.Unpickler(f2).load()
f2.close()
d2 == d
وإرجاع صحيح
لا تنتمي إلى StackOverflow