2015-05-22 16 views
6
benim proje python2.7 yapmaya çalışıyorum

ve 3 int.from_bytes ve piton 3 yöntem int.from_bytes inşa etti. Eşdeğer python 2.7'de var mı, yoksa bu kodu 2.7 ve 3 uyumlu hale getirmenin en iyi yolu hangisidir?piton 2.7 eşdeğer uyumlu

>>> int.from_bytes(b"f483", byteorder="big") 
1714698291 
+0

Özellikle çapraz sürüm çözüm arıyorsanız o zaman başlığında bu açıklığa kavuşturmak gerekir. –

cevap

14

(Python 2 spesifik):

>>> int('f483'.encode('hex'), 16) 
1714698291 

Veya Python 2 ve Python 3'te:

>>> int(codecs.encode(b'f483', 'hex'), 16) 
1714698291 

avantajı dize sınırlı değildir olduğunu belirli bir boyut varsayımına. Dezavantajı imzasızdır.

+0

hah Ben bu çözümü sevdim ... alot ... Ben onun düşüncesi olmazdı :) giriş –

+0

hakkında bir şey bilmek zorunda değilsiniz avantajı vardır Yours daha iyi gerçekten Python 2 ve – dawg

+0

tho 3. teşekkürler codecs.encode sizinki de –

5
struct.unpack(">i","f483")[0] 

belki?

> big-endian anlamı ve i vasıta 32 bit

int ayrıca bkz imzaladı: https://docs.python.org/2/library/struct.html

+0

bu –

+1

O 'olmalı ... python2 ve 3'de struct.unpack çalışması gerekir ("> i", "f483") [0]'. Bakınız [burada] (http://repl.it/pIt). – mbomb007

+0

elbette int32 daha büyük bir şey için çalışmaz. herhangi bir ipucu? –

2

kullanın struct modül tamsayılar içine bayt açmak için. Bir kodlama gibi davranabilirsiniz

import struct 
>>> struct.unpack("<L", "y\xcc\xa6\xbb")[0] 
3148270713L 
+0

sadece onları baytlara çözüyor ... hepsini 1 32 bit tamsayı olarak istiyor ... belki daha büyük ... ama sen bu doğruyu kullanmak için kullanacağın modül ... –

+1

Gerçek şeye ihtiyacı olduğunu anlamadım tamsayı değerleri, ama evet, sabit. – SanketDG