2014-01-06 2 views
0

У меня есть c-функция в dll.python: как передать список в массив c_byte

Он имеет интерфейс, как int dcm(char inmsg[], int length);

Теперь у меня есть список, как (число членов более чем 1000 иногда)

a = [0x41,0x00,0x00,0xC8,0x08,0x01,0x03,0x00,0x00,0x02,0x10,0x00,0x66,0x62,0x05,0x00,0x06,0x00,0x57,0x02,0x01,0xBF,0xFF,0x00,0xBF,0x9A,0x00,0x05,0x80,0x10,0x32,0x00,0x07,0x1F,0x00,0x00,0x05,0x00,0xD1,0x01,0x01,0xBF,0x04,0x00,0x03,0xBF,0x04,0x00,0x21,0x64,0x00,0x00,0x0A,0xBF,0xFF,0x00,0xBF,0xFF,0x00,0xBF,0xFF,0x00,0xBF,0xF3,0x00] 

Я хочу, чтобы бросить список c_byte массив и передать его как первый параметр для функции dcm.

Как передать его в массив c_byte?

ответ

1

Вы можете сделать это -

import ctypes 
a = [0x41,0x00,0x00,0xC8,0x08,0x01,0x03,0x00,0x00,0x02,0x10,0x00,0x66,0x62,0x05,0x00,0x06,0x00,0x57,0x02,0x01,0xBF,0xFF,0x00,0xBF,0x9A,0x00,0x05,0x80,0x10,0x32,0x00,0x07,0x1F,0x00,0x00,0x05,0x00,0xD1,0x01,0x01,0xBF,0x04,0x00,0x03,0xBF,0x04,0x00,0x21,0x64,0x00,0x00,0x0A,0xBF,0xFF,0x00,0xBF,0xFF,0x00,0xBF,0xFF,0x00,0xBF,0xF3,0x00] 
arr = (ctypes.c_byte * len(a))(*a) 

Затем вы можете передать arr вашей функции C. Более подробная информация: in the doc.

Смежные вопросы