2013-05-29 2 views
0

Странная проблема, я думаю:ctypes pure python vs ctypes django

У меня есть библиотека C, которая меняет символ *. Когда я использую ctypes в чистом python, я получаю правильное решение. Однако, когда я пытаюсь использовать тот же код в представлении django, я получаю неправильный ответ.

Pure Python:

import sys 
from ctypes import * 
path = "library.so" 
lib = cdll.LoadLibrary(path) 
reverse = lib.reverse 
reverse.restype = c_char_p 

, когда я использую "обратный ('Pepe')" Я получаю 'epep'

С Джанго, с тем же кодом, я получаю только 'р'.

Любая идея?

+2

Не могли бы вы дать нам дополнительную информацию о том, что означает «с джанго»? Может быть, какой контекст в django вы используете «обратный»? –

+0

С django подразумевается использование этого кода в представлении django. –

+1

Django использует unicode. В основном он помещает NULL-байт после каждого символа в строке. Это может быть так, что library.so не видит строку правильно. –

ответ