Как бы вы преобразовали строку в значения ASCII?
Например, "привет" вернет 104105.
Я могу индивидуально выполнять ord ('h') и ord ('i'), но это будет проблематично, когда есть много писем.
Как бы вы преобразовали строку в значения ASCII?
Например, "привет" вернет 104105.
Я могу индивидуально выполнять ord ('h') и ord ('i'), но это будет проблематично, когда есть много писем.
Вы можете использовать понимание списка:
>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
Вот довольно краткий способ выполнения конкатенации:
>>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'
И какая-то забавная альтернатива:
>>> '%d'*len(s) % tuple(map(ord, s))
'10410110810811132119111114108100'
Если вы хотите, чтобы ваш результат был конкатенирован, как вы видите в своем вопросе, вы можете попробовать что-то вроде:
>>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'
def stringToNumbers(ord(message)):
return stringToNumbers
stringToNumbers.append = (ord[0])
stringToNumbers = ("morocco")
Совершенно очевидно, почему нужно было бы объединить (десятичные) значения "ascii". Несомненно, что объединение их без ведущих нулей (или какого-либо другого дополнения или разделителя) бесполезно - ничто не может быть надежно восстановлено из такого вывода.
>>> tests = ["hi", "Hi", "HI", '\x0A\x29\x00\x05']
>>> ["".join("%d" % ord(c) for c in s) for s in tests]
['104105', '72105', '7273', '104105']
Обратите внимание, что первые 3 выхода имеют разную длину. Обратите внимание, что четвертый результат совпадает с первым.
>>> ["".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']
>>>
Обратите внимание на такие проблемы.
Ваше описание довольно запутанно; прямая конкатенация десятичных значений не кажется полезной в большинстве контекстов. следующий код будет прикладывать каждую букву к 8-битовому символу, а THEN - конкатенацию. так работает стандартная кодировка ASCII.
def ASCII(s):
x = 0
for i in xrange(len(s)):
x += ord(s[i])*2**(8 * (len(s) - i - 1))
return x