L'envoi de Valeurs hexadécimales à travers le protocole TCP ou UDP socket via le passage de paramètres à un script

Je sais que pour envoyer des données à travers un socket UDP utilisation de python doit être dans le format suivant "\x41" = Un .

J'ai un script python udp_send.py et je veux envoyer dans un hex pour représenter la valeur d'une valeur de registre sur le serveur.

J'exécute mon script via linux terminal >>python udp_send.py "\x41" . J'ai lu la variable à l'aide de argv[1] dans mon script python. J'ai fait un len vérifier et il est de 3 . Il ignore \ et prendre x, 4 et 1 que 1 octet chacun alors que je veux \x41 pour représenter 1 octet.

J'ai ensuite essayer de concaténer des données="\x"+"41", mais cela n'a pas fonctionné.

"\x" est interprété comme s'échapper par python. Je suis en train d'essayer de trouver un moyen de passer d'une valeur hexadécimale dans mon script et de l'envoyer via socket UDP?

J'ai obtenu jusqu'à présent. Envoyer un hex de la valeur définie dans le script python via socket UDP .

from socket import *
from sys import *

## Set the socket parameters
host = <ip-define-here>
port = <port-define-here>
buf = 1024
addr = (host,port)

## Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)

## Send messages
data ='\x41'
#data=argv[1] #commented out
if not data:
    print "No data"
else:
    if(UDPSock.sendto(data,addr)):
        print "Sending message ",data

## Close socket
UDPSock.close()

J'ai utilisé wireshark sur le côté serveur et vu la valeur hex 41 apparaissent.

Juste pour être clair, "41"(2 octets) n'est pas le même que le "\x41"(un octet seulement) en python.

Ma simple question est, comment puis-je prendre un caractère "41" et de le joindre avec "\x" pour la forme "\x41" afin que je puisse l'affecter à la variable de données dans mon script python, donc je peux l'envoyer en tant que valeur hex 41.

OriginalL'auteur Abdulhak N. | 2012-04-11