[Python] Aide pour un algorithme (paquets, hexadécimal)

Fermé
Zookin - Modifié par Zookin le 15/07/2016 à 20:25
 Utilisateur anonyme - 2 août 2016 à 19:30
Bonjour tout le monde,

Je ne comprends pas un algorithme, et j'ai besoin de le comprendre pour faire un programme.
L’algorithme fonctionne avec hexadécimale et la librairie struct de Python.

L’algorithme en question convertit une donnée sous forme de paquets (hexadécimal) mais son convertisseur procède bizarrement

def varint_pack(d):
    o = b''
    while True:
        b = d & 0x7F
        d >>= 7
        o += pack("B", b | (0x80 if d > 0 else 0))
        if d == 0:
            break
    return o


La valeur de d est égale a 210 et le return donne : b'\xd2\x01'

Contrairement à moi quand je convertit ce décimal (210) en hexadécimal je reçois : b'\xd2'
J'ai remarqué que la valeur b = 82 soit égale à 210 - 128 (0x80) donc je sais pas si il découpe le décimal pour que l’hexadécimal reste dans une "norme" ?

Je vous donne les logs lors quand on appelle cette fonction (varint_pack):

D = 210

b = 82
d = 1
o = b'\xd2'

b = 1
d = 0
o = b'\xd2\x01'


Merci de votre aide et de vos réponses en avance :)
A voir également:

1 réponse

Utilisateur anonyme
2 août 2016 à 19:30
int('d2',16)
retourne:
210

donc je ne voit pas ou est le probleme

plz tu pourait reformuler
0