Comment puis-je convertir une chaîne à sa valeur d'octet? J'ai une chaîne "hello"
et je veux changer est à quelque chose comme "/x68..."
.Comment convertir une chaîne en tableaux d'octets?
Répondre
Python 2.6 et versions ultérieures ont un type bytearray qui peut être ce que vous cherchez. Contrairement aux chaînes, il est modifiable, c'est-à-dire que vous pouvez modifier des octets individuels "en place" plutôt que d'avoir à créer une chaîne entière. Il a un bon mélange des caractéristiques des listes et des chaînes. Et cela rend également votre intention claire, que vous travaillez avec des octets arbitraires plutôt que du texte.
Citation "Je veux changer tout ce qui est dans le fichier (String) en tableau byte." .. La réponse @ kindall fait exactement cela. +1 pour bytearray() – easysid
'list (bytearray (" hello "))' –
J'ai fait un test de vitesse et 'list (bytearray (" hello "))' est plus rapide que map (ord, "hello") ' –
Si vous souhaitez obtenir une représentation de chaîne hexadécimale que vous pourriez faire:
"hello".encode("hex") # '68656c6c6f'
Et pour répondre à votre représentation de référence (ne le prenez pas au sérieux, devinez c'est pas ce que vous voulez vraiment) :
"".join(["/x%02x" % ord(c) for c in "hello"]) # '/x68/x65/x6c/x6c/x6f'
peut-être que vous voulez que ce (Python 2):
Pour une chaîne Unicode ce rentreraient points de code Unicode:
>>> map(ord,u'Hello, 马克')
[72, 101, 108, 108, 111, 44, 32, 39532, 20811]
Mais encoder pour obtenir des valeurs d'octets pour le codage:
>>> map(ord,u'Hello, 马克'.encode('chinese'))
[72, 101, 108, 108, 111, 44, 32, 194, 237, 191, 203]
>>> map(ord,u'Hello, 马克'.encode('utf8'))
[72, 101, 108, 108, 111, 44, 32, 233, 169, 172, 229, 133, 139]
Notez que cela ne retournera pas les valeurs "byte" pour les caractères non-ASCII, car ord renverra quelque chose de plus grand que 0xFF. – user100464
@ user100464, pas pour une chaîne d'octets, comme ci-dessus pour Python 2 ('map' ne retourne pas une liste dans Python 3). Un octet ne peut pas être supérieur à 0xFF. En outre, non-ASCII est au-dessus de 0x7F, pas 0xFF :) –
- 1. Convertir une chaîne en liste de tableaux
- 2. Comment analyser une chaîne en plusieurs tableaux
- 3. Comment convertir une chaîne en une table
- 4. Convertir des tableaux en une ligne en PHP
- 5. Comment convertir une chaîne?
- 6. Convertir une chaîne en une expression régulière
- 7. Comment convertir une représentation binaire d'une chaîne en une chaîne?
- 8. Comment convertir une chaîne char en une chaîne wchar_t?
- 9. Comment convertir une chaîne strings en chaîne en C++?
- 10. Convertir une chaîne en Uri
- 11. Comment convertir une chaîne en un point?
- 12. Comment convertir une chaîne en CharSequence?
- 13. comment convertir une chaîne en listviewitem?
- 14. Comment convertir une chaîne "nine" en 9?
- 15. Comment convertir une chaîne en VariableBinding? (org.snmp4j.mp.SnmpConstants)
- 16. Comment convertir une chaîne en horodatage?
- 17. Comment convertir une chaîne en ifstream
- 18. Comment convertir une chaîne en TimeSeriesDataItem
- 19. Comment convertir une chaîne en NSDate?
- 20. Comment convertir une chaîne en type
- 21. Comment convertir une chaîne en dictionnaire?
- 22. Comment convertir une chaîne en tuple
- 23. Comment convertir une chaîne en objet Date?
- 24. Comment convertir une chaîne sbyte [] en base64?
- 25. Comment convertir une chaîne en objet JSON?
- 26. Comment convertir une chaîne en identifiant unique?
- 27. Comment convertir une chaîne en 'System.Web.HttpPostedFile'?
- 28. Comment convertir une heure en chaîne
- 29. Comment convertir une vue Razor en chaîne?
- 30. Comment convertir une chaîne en int?
vous vous rendez compte qu'il est tout juste bits et octets au le niveau le plus bas et que les chaînes '" hello "' et '" \ x68 \ x65 \ x6C \ x6C \ x6F "' sont identiques (à moins que vous n'échappiez les barres obliques inverses au lieu de les utiliser pour les échappements hexadécimaux)? – delnan
Oui, je sais. Je veux juste exporter dans un tableau à un niveau aussi bas. – Martin
Cela n'a aucun sens, qu'est-ce que vous _actually_ voulez faire? (Ceci est juste une étape intermédiaire que vous pensez que vous devez faire) – plundra