2012-02-21 11 views
11

在我的Java代碼中,我有以下片段:Java String.getBytes()和Python string - > bytes之間的行爲完全相同嗎?

String secret = "secret"; 
byte[] thebytes = secret.getBytes(); 

我想有完全相同相同的結果蟒蛇。我怎樣才能做到這一點 ?

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

謝謝。

編輯:

此外,這將是有趣的,有我不知道究竟同爲Python 2.x和3.x

+0

'secret.getBytes()'的結果是什麼? – katrielalex 2012-02-21 10:17:09

+0

哪個版本的Python? Python 3中的字符串處理得到了極大的更新,使Unicode更加明智。 – katrielalex 2012-02-21 10:20:07

+0

你關心Unicode嗎? – katrielalex 2012-02-21 10:22:49

回答

6

這並不像看起來那麼簡單,因爲Python歷來將字節數組和字符串混合在一起。 Python 3中的簡短答案是

secret = "secret" 
secret.encode() 

但是,您應該瞭解Python如何處理unicode,字符串和字節。

+0

謝謝,對於Python 2.x? – 2012-02-21 10:25:05

+1

Python 2.x中的'str'是一串字節。如@Linus所說,如果你想把他們的字節值作爲一個整數,那麼'map(ord,secret)'。 – katrielalex 2012-02-21 10:43:39

4

的解決方案,因爲Python沒有按」噸有byte,但是這可能做的伎倆:

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

或者使用map,作爲katrielalex建議,只是因爲它的漂亮:

bytes = map(ord, "secret") # => [115, 101, 99, 114, 101, 116] 
+0

完成這項工作。謝謝! – 2015-02-18 10:16:02

7

在蟒蛇 - 2.7有bytearray()

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

如果這是你在找什麼。

相關問題