IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

probleme pour le transfert dune array de Python vers C


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut probleme pour le transfert dune array de Python vers C
    Bonjour a tous
    jai un soucis lorsque jessaie de transferer une array de Python a C

    L'array "elines" se presente comme suit quand je fais "print elines" sous Python
    array('l',[2429, 2434, 2439 ...])
    len(elines) renvoie 1295

    Je passe ensuite cette array vers mon programme C par

    pacakge_image = test.runtest(parametre1,parametre2...,elines)

    Je recupere ensuite mes variables et elines dans ma fonction C par

    if (!PyArg_ParseTuple(args, "lllddds#....s#), &param1, &param2, ..... &array_elines,&len_elines))
    return NULL;

    Le dernier "s#" concernant justement mon array

    len_elines est un entier sense me donner la taille du string array_elines, il me renvoie 5180 soit exactement 4 fois 1295 ! pourquoi ?

    ensuite quand jessaie de sortir les valeurs comme suit
    for (i=0;i<len_elines;i++)
    printf("%ld ",*(array_elines + i))

    et bien je n'obtiens en rien les valeurs initiales, jobtiens des centaines au plus haut, beaucoup de zeros et beaucoup de 255...

    Sauriez vous dou vient le probleme ?

    merci bcp davance

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    je crois que le probleme vient du fait que elines est une array de long et que dans mon programme C je lui demande de voir ca comme une chaine de caracteres...
    il faudrait que je convertisse elines en chaine de caractere avant de la passer en argument de ma fonction qui appelle le C...

    est il de proceder ainsi ?

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    non en fait, je peux lui envoyer une array de long (jai fait la meme chose avec une array de int et ca marchait) le probleme cest que lacces aux donnes ne peut plus se faire ainsi :
    donnees[i]= *(elines + i)
    car les long sont codes sur 4 bytes (cest pourquoi la taille de la chaine de caractere elines lue en C est 4 fois plus grande qu'en python ou il ne voit que les chiffres)
    il me faudrait donc un moyen de pouvoir acceder aux donnees, en sachant que cest des long et non pas des int.

    jai essaye de les stocker dans un vecteur de long en C, en faisant mon_vecteur[i] = *(elines + 32*i) pour lui dire daller voir toutes les 4 valeurs, ca ressemble plus a quelque chose mais cest tjs pas ca, en testant toutes les 32 valeurs au lieu de toutes les 4, ca ressemble encore plus mais toujours pas...

    une solution ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Le mieux est sûrement de transformer ton array en list avec tolist() au niveau de l'appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    package_image = test.runtest(parametre1,parametre2...,elines.tolist() )
    Au niveau de l'api C/python, une liste est facile à utiliser.

Discussions similaires

  1. probleme pour vider un array php
    Par Xeuch dans le forum Langage
    Réponses: 2
    Dernier message: 11/03/2013, 13h28
  2. SWIG probleme pour lancer le script python dans mon code C++ et récupérer un objet
    Par spartan811 dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 11/05/2012, 16h23
  3. Réponses: 4
    Dernier message: 10/12/2009, 20h29
  4. Python probleme pour traitement fichier Xml avec l'API dom
    Par chenimitz dans le forum Général Python
    Réponses: 11
    Dernier message: 30/10/2007, 19h34
  5. probleme pour un jeu de dames en python
    Par doudou152 dans le forum Général Python
    Réponses: 7
    Dernier message: 22/04/2005, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo