2012-02-21 11 views
11

は、私は次のスニペットを持っています。どうやってやるの ?Java String.getBytes()とPython string - > bytesの動作はまったく同じですか?私は<strong>正確</strong> Pythonで同じ結果を持っていると思い</p> <pre><code>String secret = "secret"; byte[] thebytes = secret.getBytes(); </code></pre> <p>:私のJavaコードで

secret = 'secret' 
thebytes = ??? ??? ??? 

ありがとう。

EDIT:Pythonは「doesnのため、

また、私が正確同じについてはよく分からないのPython 2.xおよび3.x

+0

'secret.getBytes()'の結果は何ですか? – katrielalex

+0

どのバージョンのPythonですか? Python 3では、文字列の処理が劇的に更新され、Unicodeが分かりやすくなりました。 – katrielalex

+0

あなたはUnicodeを気にしますか? – katrielalex

答えて

6

これは、Pythonが歴史的にバイト配列と文字列を融合させているため、最初のように単純ではありません。短い答えは、Pythonの3で、

secret = "secret" 
secret.encode() 

あるしかし、あなたはPythonがユニコード、文字列やバイトを扱う方法にまで読んでください。 python-2.7では

+0

ありがとう、そしてPython 2.xのために? –

+1

Python 2.xの 'str'はバイトの文字列です。 @Linusのように、それらのバイト値を整数として 'map(ord、secret)'にしたいならば。 – katrielalex

4

のためのソリューションを持っているのは興味深いだろうkatrielalexはそれはかなりだという理由だけで、示唆されているように、

bytes = [ord(c) for c in "secret"] # => [115, 101, 99, 114, 101, 116] 

またはmapを使用して::

トン byteを持っているが、これはトリックを行う可能性があります
bytes = map(ord, "secret") # => [115, 101, 99, 114, 101, 116] 
+0

それは仕事をします。ありがとう! –

7

bytearray()があります:

>>> s = 'secret' 
>>> b = bytearray(s) 
>>> for i in b: 
... print i 
115 
101 
99 
114 
101 
116 

これはあなたが探しているものである場合。