Comment convertiriez-vous une chaîne en valeurs ASCII)?
Par exemple, "hi" renverrait 104105.
Je peux faire individuellement ord ('h') et ord ('i'), mais ça va être gênant quand il y a beaucoup de lettres.
Vous pouvez utiliser une compréhension de liste:
>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
Voici une manière assez concise d'effectuer la concaténation:
>>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'
Et une sorte d'alternative amusante:
>>> '%d'*len(s) % Tuple(map(ord, s))
'10410110810811132119111114108100'
Si vous voulez que votre résultat soit concaténé, comme vous l'avez montré dans votre question, vous pouvez essayer quelque chose comme:
>>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'
Si vous utilisez python 3 ou plus,
>>> list(bytes(b'test'))
[116, 101, 115, 116]
def stringToNumbers(ord(message)):
return stringToNumbers
stringToNumbers.append = (ord[0])
stringToNumbers = ("morocco")
votre description est plutôt déroutante; concaténer directement les valeurs décimales ne semble pas utile dans la plupart des contextes. le code suivant convertira chaque lettre en un caractère de 8 bits et ENSUITE concaténer. Voici comment fonctionne l'encodage standard ASCII
def ASCII(s):
x = 0
for i in xrange(len(s)):
x += ord(s[i])*2**(8 * (len(s) - i - 1))
return x
Il n’est pas du tout évident de vouloir concaténer les "valeurs ascii" (décimales). Ce qui est certain, c’est qu’il est inutile de les concaténer sans zéros non significatifs (ni autre remplissage ni délimiteur), rien n’est récupérable de manière fiable à partir d’une telle sortie.
>>> tests = ["hi", "Hi", "HI", '\x0A\x29\x00\x05']
>>> ["".join("%d" % ord(c) for c in s) for s in tests]
['104105', '72105', '7273', '104105']
Notez que les 3 premières sorties sont de longueur différente. Notez que le quatrième résultat est le même que le premier.
>>> ["".join("%03d" % ord(c) for c in s) for s in tests]
['104105', '072105', '072073', '010041000005']
>>> [" ".join("%d" % ord(c) for c in s) for s in tests]
['104 105', '72 105', '72 73', '10 41 0 5']
>>> ["".join("%02x" % ord(c) for c in s) for s in tests]
['6869', '4869', '4849', '0a290005']
>>>
Notez pas de tels problèmes.