问题描述
我需要将 Python 中的字符串转换为其他类型,例如无符号和有符号的 8、16、32 和 64 位整数、双精度数、浮点数和字符串.
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.
我该怎么做?
推荐答案
您可以使用 int
函数将字符串转换为 32 位有符号整数:
You can convert a string to a 32-bit signed integer with the int
function:
str = "1234"
i = int(str) // i is a 32-bit integer
如果字符串不代表整数,您将收到 ValueError
异常.但是请注意,如果字符串确实表示一个整数,但该整数不适合 32 位有符号整数,那么您实际上会得到一个 long
类型的对象.
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
您可以使用 float
函数将字符串转换为浮点数:
You can convert strings to floating point with the float
function:
f = float("3.14159")
Python 浮点数是其他语言所称的 double
,即它们是 64 位.Python 中没有 32 位浮点数.
Python floats are what other languages refer to as double
, i.e. they are 64-bits. There are no 32-bit floats in Python.
这篇关于Python 中的类型转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!