Besoin aide décoder des données réceptionnées d'une socket UDP
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:
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 :)