文字列をASCII値に変換する方法は?文字列をASCII値のPythonに変換する
例えば、「こんにちは」を返します104105.
私が個別にORD(「H」)とORD(「I」)を行うことができますが、文字が多いときに面倒なことになるだろう。
文字列をASCII値に変換する方法は?文字列をASCII値のPythonに変換する
例えば、「こんにちは」を返します104105.
私が個別にORD(「H」)とORD(「I」)を行うことができますが、文字が多いときに面倒なことになるだろう。
あなたは、リストの内包表記を使用することができます。
>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
あなたの結果は、連結したい場合は、あなたの質問に示したように、あなたが何かを試みることができる:ここで
>>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'
をかなり簡潔です連結を実行する方法:
>>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'
と楽しい代替の並べ替え:
>>> '%d'*len(s) % tuple(map(ord, s))
'10410110810811132119111114108100'
なぜ(10進)「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つの出力の長さが異なることに注意してください。 4番目の結果は最初の結果と同じです。
>>> ["".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']
>>>
このような問題はありません。
def stringToNumbers(ord(message)):
return stringToNumbers
stringToNumbers.append = (ord[0])
stringToNumbers = ("morocco")
あなたの説明はかなり混乱しています。小数点を直接連結することは、ほとんどのコンテキストでは有用ではないようです。次のコードは各文字を8ビット文字に変換し、次に連結します。標準のASCIIエンコーディングの仕組みです
def ASCII(s):
x = 0
for i in xrange(len(s)):
x += ord(s[i])*2**(8 * (len(s) - i - 1))
return x
私は何を考えていましたか?これは私のものよりもはるかに不快です。それは、私がHaskell質問の束を読んだ直後にPythonの質問に答えるために得たものです。+1 – Nate