9
votes

Python - Conversion Hex en Int / Char

J'ai de la difficulté à changer un hexadécimal vers un int / char (char de préférence). Via le site web; http://home2.paulschou.net/tools/xlate/ i Entrez dans l'hex de c0a80026 dans la boîte hexagonale, dans la boîte déc / Char, il génère correctement l'IP que je m'attendais à contenir.

Ces données sont tirées d'une base de données externe et je ne suis pas conscient de la manière dont il est sauvegardé pour tout ce que je dois travailler avec est la chaîne hexagone elle-même.

J'ai essayé d'utiliser la fonction binAcii.unhexLify pour voir si je pouvais le décoder, mais je crains que je n'ai peut-être pas une bonne compréhension suffisante de hexagonal pour apprécier ce que je fais.

Attaquez-vous pour imprimer uniquement l'utilisation d'une installation int () n'a également pas produit les résultats requis. J'ai besoin d'un moyen de convertir de cette chaîne hexagonale (ou une personne similaire) à l'adresse IP d'origine.

Mise à jour: pour toute personne qui apparaît à l'avenir, j'ai légèrement modifié la réponse ci-dessous pour fournir une impression exacte comme une adresse IP en utilisant; xxx


5 commentaires

Dupliqué possible de Convertir une chaîne hexagonale en int in dans Python


Cette solution ne fonctionne pas avec mon problème


Veuillez expliquer exactement comment la question de la duplication n'est pas une duplication. Détails compte. "Ne travaille pas avec mon problème" est trop vague pour dire quoi que ce soit.


Désolé, je suppose que vous les aviez déjà comparé. Mon problème est lié à la décodage hexagone dans une adresse IP que l'autre question ne couvre pas. Également bien que je ne connaisse pas beaucoup d'expérience sur HEX ou Python, il n'y a pas de questions connexes qui suggère que notre similitude se termine à tenter de décoder hex mais qui essaient d'atteindre deux extrémités différentes


Il aide à éviter toutes les hypothèses. Je ne comprends toujours pas pourquoi la question fournie n'est pas la réponse à votre question car (1) Je ne comprends pas les nuances de votre question et (2) je ne comprends pas les lacunes de votre connaissance. Plutôt que d'assumer, s'il vous plaît Mettre à jour Votre question aux détails - spécifiquement - pourquoi une réponse existante largement acceptée n'est pas appropriée pour cela. Détails compte. Et mises à jour à la question sont meilleures que des commentaires.


6 Réponses :


0
votes

J'espère que c'est ce que vous attendez:

hex_val = 0x42424242     # hexadecimal value
int_val = int(hex_val)   # integer value
str_val = str(int_val)   # string representation of integer value


1 commentaires

Literal 0x4242422 crée déjà un entier, int (heex_val) est redondant.



8
votes

Si vous souhaitez obtenir 4 numéros distincts, donnez-le comme 4 numéros distincts. Vous n'avez pas besoin binAcii . XXX

Ceci peut être généralisé, mais je laisserai un exercice pour vous.


0 commentaires

6
votes

Vous avez peut-être aussi besoin de la fonction CHR:

chr(65) => 'A'


1 commentaires

CHR accepte uniquement les entiers La question indique clairement que l'utilisateur doit convertir un hexadécimal dans un int / char (pas un intégrité en caractères) et de la CHR n'accepte que des entiers, ce qui n'était donc pas une solution.



3
votes
>>> htext='C0A80026'
>>> [int(htext[i:i+2],16) for i in range(0,len(htext),2)]
# [192, 168, 0, 38]

0 commentaires

8
votes

Un moyen simple xxx

si vous préférez des comprimés de liste xxx


1 commentaires

Joli. Je personnellement l'écrire comme une compréhension de la liste, mais c'est purement goûte. J'aime l'utilisation de décodage et ord .



3
votes

Pour convertir une chaîne hexadécoise en chaîne lisible humaine, vous pouvez échapper à chaque personnage hexagonal, comme celui-ci: xxx pré>

à partir de la chaîne, vous pouvez facilement boucler sur la liste INT: P>

>>> [ord(c) for c in '\xC0\xA8\x00\x26']
[192, 168, 0, 38]


0 commentaires