12
วิธีแปลงสตริงไบต์เป็น int?
ฉันจะแปลงสตริงไบต์เป็น int ในไพ ธ อนได้อย่างไร พูดอย่างนี้: 'y\xcc\xa6\xbb' ฉันคิดวิธีที่ฉลาด / โง่ขึ้นมา: sum(ord(c) << (i * 8) for i, c in enumerate('y\xcc\xa6\xbb'[::-1])) ฉันรู้ว่าต้องมีบางสิ่งในตัวหรือในห้องสมุดมาตรฐานที่ทำสิ่งนี้ได้ง่ายกว่า ... ซึ่งแตกต่างจากการแปลงสตริงของตัวเลขฐานสิบหกซึ่งคุณสามารถใช้ int (xxx, 16) ได้ แต่ฉันต้องการแปลงสตริงของค่าไบต์จริงแทน UPDATE: ฉันชอบคำตอบของ James ที่ดีขึ้นเล็กน้อยเพราะไม่ต้องการนำเข้าโมดูลอื่น แต่วิธีของ Greg เร็วขึ้น: >>> from timeit import Timer >>> Timer('struct.unpack("<L", "y\xcc\xa6\xbb")[0]', 'import struct').timeit() 0.36242198944091797 >>> Timer("int('y\xcc\xa6\xbb'.encode('hex'), 16)").timeit() 1.1432669162750244 …