Bonjour,
j'ai besoin d'aide concernant un bout de code que je n'arrive ps à faire fonctionner
Après avoir fait une requête UDP, je réceptionne un message sur un port et une adresse IP. Ce message fait 54 bytes, il est composé d'un premier paramètre (entier sur 4 bytes), d'un deuxième paramètre (double sur 8 bytes) et d'un dernier paramètre (entier sur 4 bytes), le reste est du padding. Je ne réussi à pas à récupérer le deuxième paramètre et l'exploiter/afficher comme un double. Ci-dessous mon bout de code qui ne fonctionne pas
Code : 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 sock_ecoute = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock_ecoute.bind(('127.0.0.1',16003)) try: data, server = sock_ecoute.recvfrom(54) data_hex = data.hex() print(f"Réponse reçue hex: '{data_hex}'") ValidityBitOffset = data_hex[0:8] TERRAIN_ELEV_FT = data_hex[8:24] TERRAIN_ELEV_VAL = data_hex[24:26] print(f"ValidityBitOffset: '{ValidityBitOffset}'") print(f"TERRAIN_ELEV_FT: '{TERRAIN_ELEV_FT}'") print(f"TERRAIN_ELEV_VAL: '{TERRAIN_ELEV_VAL}'") print(f"elevation: '{data[4:12]}'") float_value = struct.unpack('d',data[4:12])[0] print(f"elevation: '{float_value}'")
Le code ci-dessus me retour
Réponse reçue: 'b'\x03\x00\x00\x00\x81\xe26C\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00''
taille reçue: '54'
Réponse reçue hex: '0300000081e2364300000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000'
ValidityBitOffset: '03000000'
TERRAIN_ELEV_FT: '81e2364300000000'
TERRAIN_ELEV_VAL: '01'
elevation: 'b'\x81\xe26C\x00\x00\x00\x00''
elevation: '5.57143205e-315'
Quelqu'un à t-il une idée de comment je peux procéder?
Merci pour votre aide![]()
Partager