2012-05-30 24 views
10

Python 3.2'de, bir nesnenin türünü kolayca değiştirebilirim. Örneğin: piton 2.7, bunu yapmak için aynı şekilde kullanamaz görünüyor,Python 2.7'de dize byte dizgisi değiştirme

<class 'int'> 
<class 'bytes'> 

Ama:

x=0 
print(type (x)) 
x=bytes(0) 
print(type (x)) 

bana bu verecektir. i aynı kodu yaparsanız, bana ver bu:

<type 'int'> 
<type 'str'> 

i byte türü içine türünü değiştirmek için ne yapabilirim?

+0

Martin'in cevabı ilgili bilgilere sahiptir. –

cevap

8

Türü bir bayt türüne değiştirmek için ne yapabilirim?

Yapamazsınız, Python 2.7'de 'bayt' türü yoktur.

Python 2.7 belgelerinden (5.6 Sıra Türleri): "Yedi dizi türü vardır: dizeler, Unicode dizeleri, listeler, tupl'ler, ön çerçeve, arabellekler ve xrange nesneleri." Python 3.2 belgelerine

(5.6 Sıra tipleri): "altı dizi tipi vardır. Ipler, bayt dizileri (nesneleri bayt), (nesneler ByteArray) bayt dizileri, listeler, küpe ve aralık nesneler"

11

Türleri değiştirmiyorsunuz, bir değişkene farklı bir değer ataıyorsunuz.

Ayrıca, python 2.x ve 3.x arasındaki temel farklılıklardan birine vurmaktasınız; 2.x türünde unicode, bytes olarak yeniden adlandırılan str türünün yerini almıştır. Python 2'nin daha yeni sürümleri, her iki sürüm altında çalışan yazma kodunu rahatlatmak için str için bir diğer ad olarak bytes ekledikçe kodunuzda çalışır. Başka bir deyişle kodunuz beklendiği gibi çalışıyor.

+0

2,7'de, aynı şeyi 3.2'de yapmamın bir yolu var mı? Sadece bayt cinsinden olmasını istiyorum. – Smith

+3

python cinsinden str yazın 2.7 * * bayt türü *. –

4

Python 2.x, bytes yalnızca str için bir diğer addır, bu nedenle her şey beklendiği gibi çalışır. Dahası, burada herhangi bir nesnenin türünü değiştirmiyorsunuz - sadece x ismini farklı bir nesneye ispatlıyorsunuz.

+2

2,7'de, 3.2'de aynı şeyi yapmamın herhangi bir yolu var mı? Sadece bayt cinsinden olmasını istiyorum. – Smith