¿Cómo convertiría una cadena a valores ASCII?Convierta cadena en valor ASCII python
Por ejemplo, "Hola" volvería 104105.
que pueda hacer de forma individual ord ('h') y ord ('i'), pero va a ser un problema cuando hay un montón de cartas.
¿Cómo convertiría una cadena a valores ASCII?Convierta cadena en valor ASCII python
Por ejemplo, "Hola" volvería 104105.
que pueda hacer de forma individual ord ('h') y ord ('i'), pero va a ser un problema cuando hay un montón de cartas.
Se puede utilizar una lista por comprensión:
>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
Si desea que su resultado concatenado, como se muestra en su pregunta, usted podría intentar algo como:
>>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'
Aquí es una muy concisa manera de realizar la concatenación:
>>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'
y una especie de alternativa divertida:
>>> '%d'*len(s) % tuple(map(ord, s))
'10410110810811132119111114108100'
No es en absoluto evidente por qué uno querría para concatenar los (decimales) "valores ASCII". Lo cierto es que concatenarlos sin ceros a la izquierda (u otro relleno o delimitador) es inútil, nada puede recuperarse de manera confiable de tal salida.
>>> tests = ["hi", "Hi", "HI", '\x0A\x29\x00\x05']
>>> ["".join("%d" % ord(c) for c in s) for s in tests]
['104105', '72105', '7273', '104105']
Tenga en cuenta que las primeras 3 salidas son de diferente longitud. Tenga en cuenta que el cuarto resultado es el mismo que el primero.
>>> ["".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']
>>>
Nota no hay tales problemas.
def stringToNumbers(ord(message)):
return stringToNumbers
stringToNumbers.append = (ord[0])
stringToNumbers = ("morocco")
descripción es bastante confuso; concatenar directamente los valores decimales no parece ser útil en la mayoría de los contextos. el siguiente código convertirá cada letra a un carácter de 8 bits, y ENTONCES concatenará. así es como funciona la codificación ASCII estándar
def ASCII(s):
x = 0
for i in xrange(len(s)):
x += ord(s[i])*2**(8 * (len(s) - i - 1))
return x
¿Qué estaba pensando? Esto es mucho más pitónico que el mío. Eso es lo que recibo por intentar responder a una pregunta de Python justo después de leer un montón de preguntas de Haskell ... +1 – Nate