Alex Rivera | Logout

Typecasting in Python

Asked 2008-12-22T04:35:18.190
24

I need to convert strings in Python to other types such as unsigned and signed 8, 16, 32, and 64 bit ints, doubles, floats, and strings.

How can I do this?

Edit
Report

1 Answer

46

You can convert a string to a 32-bit signed integer with the int function:

string = "1234"
i = int(string)  # i is a 32-bit integer

If the string does not represent an integer, you'll get a ValueError exception. Note, however, that if the string does represent an integer, but that integer does not fit into a 32-bit signed int, then you'll actually get an object of type long instead.

You can then convert it to other widths and signednesses with some simple math:

s8 = (i + 2**7) % 2**8 - 2**7      # convert to signed 8-bit
u8 = i % 2**8                      # convert to unsigned 8-bit
s16 = (i + 2**15) % 2**16 - 2**15  # convert to signed 16-bit
u16 = i % 2**16                    # convert to unsigned 16-bit
s32 = (i + 2**31) % 2**32 - 2**31  # convert to signed 32-bit
u32 = i % 2**32                    # convert to unsigned 32-bit
s64 = (i + 2**63) % 2**64 - 2**63  # convert to signed 64-bit
u64 = i % 2**64                    # convert to unsigned 64-bit

You can convert strings to floating point with the float function:

f = float("3.14159")

Python floats are what other languages refer to as double, i.e. they are 64-bits. There are no 32-bit floats in Python.

answered 2008-12-22T04:44:48.280

Your Answer