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

Python Discussion :

Python Base64 vers int


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut Python Base64 vers int
    Bonjour à tous,

    Je me permets de poster ici après de multiples tests infructueux.

    En effet, j'ai généré une clef RSA via openssl ($openssl genrsa macle.pem 512) de 512 bits dans le format base64. Je voulais récupérer l'int associé à cette clef via python en utilisant la bibliothèque base64 et plus précisément base64decode avec la commande int.from_bytes(b64decodes(la_str_clef),'big') puis je la récup en hexa puis en int base 10 mais le résultat n'est jamais le bon j'ai l'impression ...

    Auriez-vous des pistes pour régler ce soucis ?
    P.S. je fais cette manip pour ensuite faire le pgcd des clés et regarder si elles partagent des facteurs communs.

    Merci par avance pour vos retours.

    Chaka

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je réfléchis à ton truc car il parait logique... mais je sens qu'il y a un cafouillage. Et je crois que le cafouillage se situe au niveau de base64 car cet outil n'est pas dédié à convertir une clef RSA en int. C'est un outil dédié à convertir un binaire en ascii

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> x=base64.b64encode(b"123")
    >>> x
    b'MTIz'
    >>> y=base64.b64decode(x)
    >>> y
    b'123'
    >>> int.from_bytes(y, 'big')
    3224115
    >>> int.from_bytes(y, 'little')
    3355185
    De là, si tu utilises un outil non adapté, l'int que tu obtiens ne peut pas être correct...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Je réfléchis à ton truc car il parait logique... mais je sens qu'il y a un cafouillage. Et je crois que le cafouillage se situe au niveau de base64 car cet outil n'est pas dédié à convertir une clef RSA en int. C'est un outil dédié à convertir un binaire en ascii

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> x=base64.b64encode(b"123")
    >>> x
    b'MTIz'
    >>> y=base64.b64decode(x)
    >>> y
    b'123'
    >>> int.from_bytes(y, 'big')
    3224115
    >>> int.from_bytes(y, 'little')
    3355185
    De là, si tu utilises un outil non adapté, l'int que tu obtiens ne peut pas être correct...
    Merci beaucoup pour ton message !

    Effectivement, ton explication parait logique ! N'ayant pas trouvé d'autre bibliothèque qui faisait ça, j'ai pris la seule dont j'avais connaissance qui pouvait traiter mon problème.

    Aurais-tu une solution/recommandation/conseil afin que j'obtienne le bon résultat ?

    Merci par avance

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Chaka_Sobek Voir le message
    Aurais-tu une solution/recommandation/conseil afin que j'obtienne le bon résultat ?
    Ben en fait je n'ai pas compris quel résultat tu cherches. Tu veux l'int correspondant à la clef c'est ça?
    Mais la clef ce n'est pas un int !!! C'est une combinaison de plein d'int !!!

    Principe de base de RSA
    • choisir P et Q premiers (exemple 89 et 97)
    • calculer delta=(P-1) * (Q-1) => 8448
    • calculer N=P*Q => 8633
    • choisir e tel e premier avec delta => pgcd(e, delta)=1. Exemple e=7, pgcd(7, 8448) est bien égal à 1 => la clef publique sera le coupe (N, e) soit ici (8633, 7)
    • choisir une valeur "d" telle que (d * e) modulo delta = 1. Exemple d=1207 => 1207 * 7 = 8449 et 8449 modulo 8448 est bien égal à 1. La clef privée sera le couple (N, d) soit ici (8633, 1207)


    A partir de là, pour chiffrer une valeur (exemple) 555 sur la clef publique (N, e) on calcule (555^e) modulo N soit (555^7) % 8633 = 2928
    Et pour déchiffrer 2928 avec la clef privée (N, d) on calcule (2928^d) modulo N soit (2928^1207) % 8633 = 555

    Et pour signer c'est dans l'autre sens. Exemple on veut signer 667 via la clef privée (N, d) on calcule (667^d) modulo N soit (667^1207) % 8633 = 8625
    Et on vérifie la signature avec la clef publique (N, e) via (8625^e) modulo N soit (8625^7)%8633 ce qui redonne 667.

    Ci-joint un petit essai quand j'ai tenté du chiffrement en Python: Alice envoie un message vers Bob en utilisant la clef publique de Bob, et signe ce message en utilisant sa clef privée.
    Et Bob déchiffre le message avec sa clef privée et vérifie qu'il vient bien de Alice en checkant sa signature via la clef publique de Alice.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/usr/bin/env python3
    # coding: utf-8
     
    from Cryptodome.PublicKey import RSA
    from Cryptodome.PublicKey import RSA
    from Cryptodome.Cipher import PKCS1_OAEP
    from Cryptodome.Signature import PKCS1_PSS
    from Cryptodome.Hash import SHA
     
    message="Hello Woréld !!!"
    print(message, type(message))
     
    alice=RSA.generate(2048)
    bob=RSA.generate(2048)
    print(alice.publickey().exportKey())
    print(bob.publickey().exportKey())
     
    secret={
    	"chiffre" : PKCS1_OAEP.new(bob.publickey()).encrypt(message.encode("utf-8")),
    	"sign" : PKCS1_PSS.new(alice).sign(SHA.new(message.encode("utf-8"))),
    }
     
    final=PKCS1_OAEP.new(bob).decrypt(secret["chiffre"]).decode("utf-8")
    print("ok déchiffrement" if message == final else "erreur chiffrement")
     
    verify=PKCS1_PSS.new(alice.publickey()).verify(SHA.new(final.encode("utf-8")), secret["sign"])
    print("%s signature (%s)" % ("ok" if verify else "erreur", verify))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ben en fait je n'ai pas compris quel résultat tu cherches. Tu veux l'int correspondant à la clef c'est ça?
    Mais la clef ce n'est pas un int !!! C'est une combinaison de plein d'int !!!

    Principe de base de RSA
    • choisir P et Q premiers (exemple 89 et 97)
    • calculer delta=(P-1) * (Q-1) => 8448
    • calculer N=P*Q => 8633
    • choisir e tel e premier avec delta => pgcd(e, delta)=1. Exemple e=7, pgcd(7, 8448) est bien égal à 1 => la clef publique sera le coupe (N, e) soit ici (8633, 7)
    • choisir une valeur "d" telle que (d * e) modulo delta = 1. Exemple d=1207 => 1207 * 7 = 8449 et 8449 modulo 8448 est bien égal à 1. La clef privée sera le couple (N, d) soit ici (8633, 1207)


    A partir de là, pour chiffrer une valeur (exemple) 555 sur la clef publique (N, e) on calcule (555^e) modulo N soit (555^7) % 8633 = 2928
    Et pour déchiffrer 2928 avec la clef privée (N, d) on calcule (2928^d) modulo N soit (2928^1207) % 8633 = 555

    Et pour signer c'est dans l'autre sens. Exemple on veut signer 667 via la clef privée (N, d) on calcule (667^d) modulo N soit (667^1207) % 8633 = 8625
    Et on vérifie la signature avec la clef publique (N, e) via (8625^e) modulo N soit (8625^7)%8633 ce qui redonne 667.

    Ci-joint un petit essai quand j'ai tenté du chiffrement en Python: Alice envoie un message vers Bob en utilisant la clef publique de Bob, et signe ce message en utilisant sa clef privée.
    Et Bob déchiffre le message avec sa clef privée et vérifie qu'il vient bien de Alice en checkant sa signature via la clef publique de Alice.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/usr/bin/env python3
    # coding: utf-8
     
    from Cryptodome.PublicKey import RSA
    from Cryptodome.PublicKey import RSA
    from Cryptodome.Cipher import PKCS1_OAEP
    from Cryptodome.Signature import PKCS1_PSS
    from Cryptodome.Hash import SHA
     
    message="Hello Woréld !!!"
    print(message, type(message))
     
    alice=RSA.generate(2048)
    bob=RSA.generate(2048)
    print(alice.publickey().exportKey())
    print(bob.publickey().exportKey())
     
    secret={
    	"chiffre" : PKCS1_OAEP.new(bob.publickey()).encrypt(message.encode("utf-8")),
    	"sign" : PKCS1_PSS.new(alice).sign(SHA.new(message.encode("utf-8"))),
    }
     
    final=PKCS1_OAEP.new(bob).decrypt(secret["chiffre"]).decode("utf-8")
    print("ok déchiffrement" if message == final else "erreur chiffrement")
     
    verify=PKCS1_PSS.new(alice.publickey()).verify(SHA.new(final.encode("utf-8")), secret["sign"])
    print("%s signature (%s)" % ("ok" if verify else "erreur", verify))
    Merci pour ta réponse qui est très claire !

    En fait, quelqu'un m'a demandé de l'aide sur leboncoin pour un devoir mais son sujet me parait flou et j'ai donc cherché de mon côté sans succès.

    Ci-joint l'énoncé :

    Nom : 1.png
Affichages : 116
Taille : 125,6 Ko

    et le projet 1 dont il est question

    Nom : 2.png
Affichages : 108
Taille : 117,2 Ko
    Ne connaissant pas le " Batch GCD" et n'ayant trouvé aucune documentation python dessus sur le web, je lui ai demandé ce qu'il en était et elle m'a répondu qu'elle supposait que c'était un pgcd classique ce qui paraissait étrange (d'où mes bêtises de vouloir transformé cette clé en un int qui n'a aucun sens et ne correspond à rien .... ^^' )

    Je ne sais pas quoi faire pour ce batch gcd... Aurais-tu une piste ?

    Encore désolé pour mes questions en chaîne d'autant plus qu'elles n'ont pas de sens :/

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Chaka_Sobek Voir le message
    Ne connaissant pas le " Batch GCD" et n'ayant trouvé aucune documentation python dessus sur le web
    C'est là qu'il est frustrant de ne pas voir comment vous vous dépatouillez avec votre moteur de recherche pour ne rien trouver sur Internet avec les mots clés "python batch gcd"...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut
    Je ne sais pas ce que vous avez trouvé en écrivant ça dans la barre de recherche mais, pour ma part, je n'ai trouvé aucune docu officiel python et aucune fonction déjà implémentée. J'ai trouvé ce truc concernant une implémentation en sagemath : https://facthacks.cr.yp.to/batchgcd.html .
    Avez-vous trouvé autre chose ?

    Merci par avance.

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Chaka_Sobek Voir le message
    J'ai trouvé ce truc concernant une implémentation en sagemath : https://facthacks.cr.yp.to/batchgcd.html .
    J'avais trouvé la même chose. Toutefois sagemath c'est du Python (mais les exemples sont en Python2 vu les print sans parenthèses et les divisions utilisées comme divisions euclidiennes).
    Ensuite les exemples font appels à des outils qui semblent dédiés à sage mais où en regardant le résultat attendu, ne sont pas compliqués à réécrire en Python (je parle de producttree() utilisé dans batchgcd_faster())

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    from math import gcd, floor
     
    def producttree(X):
    	result = [X,]
    	while len(X) > 1:
    		X = [(X[i-1] * (X[i] if i < len(X) else 1)) for i in range(1, len(X)+1, 2)]
    		result.append(X)
    	return result
     
    def batchgcd_faster(X):
    	prods = producttree(X)
    	R = prods.pop()
    	while prods:
    		X = prods.pop()
    		R = [R[floor(i/2)] % X[i]**2 for i in range(len(X))]
    	return [gcd(r//n,n) for r,n in zip(R,X)]
     
    print(batchgcd_faster([1909, 2923, 291, 205, 989, 62, 451, 1943, 1079, 2419]))
    # output: [1909, 1, 1, 41, 23, 1, 41, 1, 83, 41]

    PS: quelques erreurs toutefois dans les exemples dudit site. Ainsi le coeur de productree() c'est cette ligne X = [prod(X[i*2:(i+1)*2]) for i in range((len(X)+1)/2)] qui dit "pour chaque i je multiplie X[i*2] avec X[(i+1)*2]" ce qui, si X vaut [10, 20, 30, 40, 50, 60], multipliera 10 avec 30, puis 30 avec 50 et finit par un IndexError quand i passe à 2 !!! Et comme le résultat attendu c'est [200, 1200, 3000] c'est en réalité 10*20, 30*40 et 50*60 soit en fait X[i*2] * X[i*2+1]
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Chaka_Sobek Voir le message
    J'ai trouvé ce truc concernant une implémentation en sagemath : https://facthacks.cr.yp.to/batchgcd.html .
    Avez-vous trouvé autre chose ?
    Ben ce truc, c'est du Python...

    Pour le reste, tout dépend de ce qu'on cherche: d'après l'énoncé, c'est un programme à récupérer peu importe le langage dans lequel il a été codé.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut
    Merci pour vos précédents messages.
    J'essaye ça en début d'après midi !

    Bonne journée,
    Et encore merci

    Chaka

  11. #11
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut
    Bonsoir,

    J'ai enfin bientôt fini... Pour le batch gcd, j'ai utilisé cette librairie https://pypi.org/project/batch-gcd/. Cependant un dernier problème se pose (je commence à en avoir marre...) : la fonction batch.gcd que j'utilise prend en argument plusieurs int à la suite (et non pas un tuple). Or mes int sont tous stockées dans une liste et je n'arrive pas à tous les mettre en argument. J'avais pensé à faire un truc du style batch.gcd(i for i in mes_int) où mes_int est une liste remplies d'int de taille variable en fonction des exécutions.

    Auriez-vous une solution à mon problème ?

    Merci par avance pour vos retours !

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Chaka_Sobek Voir le message
    Auriez-vous une solution à mon problème ?
    Tu appelles ta fonction en passant "étoile liste" en paramètre. Exemple la liste se nomme "data" (et contient une liste d'int) tu appelles batch_gcd(*data). C'est le unpacking.

    Maintenant... je viens de télécharger et installer ce module mais il n'a rien apporté à mon code posté ce matin. Les deux donnent le même résultat (et le mien lui il acceptait bien un itérable en paramètre !!!)
    Peut-être un bench pourrait dire lequel des deux est le plus rapide... Je vais voir si j'en fais un...

    [edit]
    Ok, j'ai fait un petit bench
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random
    import timeit
    from functools import partial
    from math import gcd, floor
    from batch_gcd import batch_gcd
     
    def producttree(X):
    	result = [X,]
    	while len(X) > 1:
    		X = [(X[i-1] * (X[i] if i < len(X) else 1)) for i in range(1, len(X)+1, 2)]
    		result.append(X)
    	return result
     
    def batchgcd_faster(X):
    	prods = producttree(X)
    	R = prods.pop()
    	while prods:
    		X = prods.pop()
    		R = [R[floor(i/2)] % X[i]**2 for i in range(len(X))]
    	return [gcd(r//n,n) for r,n in zip(R,X)]
     
    # Initialisation random
    random.seed()
     
    # Les fonctions à tester
    fct={
    	"batch_faster" : lambda l: batchgcd_faster(l),
    	"batch_module" : lambda l: batch_gcd(*l),
    }
     
    # Les données à traiter
    data=list(range(1, 10_001))
     
    # Vérification fonctions donnent résultats identiques
    assert(len(set(tuple(f(data)) for f in fct.values())) == 1)
    print("Vérification fonctions ok")
     
    # Le nombre de répétitions (les moyennes se feront sur cette valeur)
    repeat=20
     
    # Appel des fonctions dans un ordre aléatoire et affichage du chrono
    print("taille data=%d, repeat=%d" % (len(data), repeat))
    for (k, v) in random.sample(tuple(fct.items()), len(fct)):
    	t=timeit.Timer(partial(v, data)).repeat(repeat=repeat, number=100)
    	print("%s: min=%f, max=%f, avg=%f" % (k, min(t), max(t), sum(t)/len(t)))
    # for
    Il met à peu près 3/4mn pour s'exécuter (la faute au number=100 qui teste 100 fois chaque fonction mais qui permet en retour plus de précision dans les chronos)... et chez-moi c'est le faster qui est plus rapide !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Vérification fonctions ok
    taille data=10000, repeat=20
    batch_faster: min=4.436149, max=4.468541, avg=4.443463
    batch_module: min=4.540502, max=4.692805, avg=4.604616
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2021
    Messages : 28
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Tu appelles ta fonction en passant "étoile liste" en paramètre. Exemple la liste se nomme "data" (et contient une liste d'int) tu appelles batch_gcd(*data). C'est le unpacking.
    Top ! Merci énormément

    Je vous souhaite une bonne soirée et un bon weekend

Discussions similaires

  1. Convertion char vers int
    Par barthelv dans le forum C
    Réponses: 8
    Dernier message: 08/10/2011, 21h45
  2. Réponses: 12
    Dernier message: 31/12/2005, 16h01
  3. [JDBC]ResultSet vers Int
    Par chti_juanito dans le forum JDBC
    Réponses: 2
    Dernier message: 29/10/2005, 14h08
  4. Conversion float vers int
    Par vargasvan dans le forum C
    Réponses: 2
    Dernier message: 05/10/2005, 17h29
  5. Conversion VARCHAR vers INT
    Par Slash dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/05/2005, 10h43

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