Различия в типах между Python 2 и 3

У меня есть работающая программа на питоне 2.7, которая вызывает DLL. Я пытаюсь перенести скрипт на питон 3.2. Вызов DLL вроде бы работает (т.е. ошибки при вызове нет), но возвращаемые данные не имеют смысла.

На всякий случай это может оказаться полезным: - Вызов принимает три аргумента: два int (input) и указатель на массив ushort (output).

Я безуспешно пытался использовать и питоновые, и нумеровые массивы.

Может ли кто-нибудь перечислить различия между питоновыми массивами 2.7 и 3.2 с учетом стипов?

Заранее спасибо

EDIT

Вот пример кода. DLL является пропиетарной, поэтому у меня нет этого кода. Но у меня есть заголовок C:

void example (int width, int height, unsigned short* pointer)

Код на питоне:

width, height = 40, 100
imagearray = np.zeros((width,height), dtype=np.dtype(np.ushort))
image = np.ascontiguousarray(imagearray)
ptrimage = image.ctypes.data_as(ct.POINTER(ct.c_ushort))
DLL.example(width, height, ptrimage)

Он работает на питоне 2.7, но не на 3.2.

EDIT 2

Если изменения втипах - это только те, на которые указал Седрик, то нет смысла в том, что питон 3.2 не будет работать. Поэтому, глядя на код еще раз, я обнаружил, что есть функция подготовки, вызываемая перед функцией, о которой я упоминаю. Сигнатура:

void prepare(char *table)

На питоне я вызываю:

table = str(aNumber)
DLL.prepare(table)

Возможно ли, что проблема связана с изменением в работе с Python string?

14
задан agf 29 September 2011 в 16:18
поделиться