La conversion de caractère de type int, et vice-versa en Python
J'ai une app externe qui ajoute la longueur du paquet au début des données. Quelque chose comme le code suivant:
x = "ABCDE"
x_len = len(x)
y = "GHIJK"
y_len = len(y)
test_string = chr(x_len) + x + chr(y_len) + y
#TODO:perform base64 encoding
Dans le côté client du code que j'ai besoin d'être en mesure d'extraire x_len et y_len et lire x et y accrodingly.
#TODO:perform base64 decoding
x_len = int(test_string[0])
x = test_string[:x_len]
J'obtiens l'erreur suivante:
ValueError: invalid littéral pour int() avec la base 10: '\x05'
Je suppose que l'argument de type int est en hexadécimal, donc je probbaly besoin de faire un peu de décodage avant de passer à l'int. Quelqu'un peut-il me donner un pointeur de fonction à utiliser à partir de décoder et s'il existe un moyen plus facile d'accomplir cette?
double possible de Comment puis-je convertir un personnage à un nombre entier en Python, et vice-versa?
OriginalL'auteur as3rdaccount | 2014-06-02
Vous devez vous connecter pour publier un commentaire.
Vous voulez probablement
ord()
, pasint()
, depuisord()
est l'opération inverse dechr()
.Noter que votre code ne fonctionne que pour des longueurs allant jusqu'à
255
depuis que c'est le maximumchr()
etord()
soutien.Oui, il devrait l'être.
OriginalL'auteur Amber
l'utilisation de l'ord: il est utilisé pour convertir le caractère de ses valeurs ascii ..
dans certains cas, uniquement pour les alphabets qu'ils considèrent comme Un :1 --- Z:26 dans de tels cas, l'utilisation
ord('A')-64
résultats 1 puisque nous savonsord('A')
est de 65- 65
istead.OriginalL'auteur sundar nataraj