Reputation: 911
I'd like to know how to convert strings in Python to their corresponding integer values, like so:
>>>print WhateverFunctionDoesThis('\x41\x42')
>>>16706
I've searched around but haven't been able to find an easy way to do this.
Thank you.
Upvotes: 1
Views: 772
Reputation: 19924
ugly way:
>>> s = '\x41\x42'
>>> sum([ord(x)*256**(len(s)-i-1) for i,x in enumerate(s)])
16706
or
>>> sum([ord(x)*256**i for i,x in enumerate(reversed(s))])
Upvotes: 0
Reputation: 13
If '\x41\x42' is 16-based num, like AB. You can use string to convert it.
import string
agaga = '\x41\x42'
string.atoi(agaga, 16)
>>> 171
Sorry if i got you wrong...
Upvotes: 0
Reputation: 304413
>>> import struct
>>> struct.unpack(">h",'\x41\x42')
(16706,)
>>> struct.unpack(">h",'\x41\x42')[0]
16706
For other format chars see the documentation
Upvotes: 7