我需要将 Python 中的字符串转换为其他类型,例如无符号和有符号 8、16、32 和 64 位整数、双精度数、浮点数和字符串。

我怎样才能做到这一点?

有帮助吗?

解决方案

可以将字符串转换为与int功能的32位带符号整数:

str = "1234"
i = int(str)  // i is a 32-bit integer

如果该字符串不表示一个整数,你会得到一个ValueError例外。但请注意,如果该字符串确实代表一个整数,但整数不适合32位有符号整数,那么你就会得到类型long的对象,而不是。

然后,您可以将其转换为其他宽度和signednesses用一些简单的数学:

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功能:

f = float("3.14159")

的Python浮子是什么其它语言称之为double,即它们是64位。有没有32位浮点在Python。

其他提示

以下类型(大部分)在 Python 中一开始就不存在。在 Python 中,字符串被转换为整型、长整型或浮点数,因为仅此而已。

您首先要求进行与 Python 无关的转换。以下是您要求的类型及其 Python 等效类型的列表。

  • 无符号和有符号 int 8 位, 整数
  • 无符号和有符号 int 16 位, 整数
  • 无符号和有符号 int 32 位,无符号: 长的, , 签 整数
  • 无符号和有符号 int 64 位, 长的

  • 双倍的, 漂浮

  • 漂浮, 漂浮
  • 细绳, 这就是你必须开始的

我不知道下面是什么,所以我不知道 Python 的等价物。

  • 无符号和有符号 8 位,
  • 无符号和有符号 16 位,
  • 无符号和有符号 32 位,
  • 未签名和签名 64 位。

您已经拥有所有重要的转换: int(), long()float().

的Python仅具有单个int类型。将字符串转换成int,使用int()这样的:

>>> str = '123'
>>> num = int(str)
>>> num
123

修改:同时转换为浮动,以完全相同的方式使用float()

我不认为这必需要没有更多的信息很好回答。正如其他人所说,只有int和长整型在Python - 语言不符合较低级别的编程语言的位宽和符号性的原型

如果你蟒之内完全操作,那么你可能会问错了问题。有可能是一个更好的方式做你所需要的。

如果您正在使用互操作,例如,C代码,或在网络上,则有的方式来做到这一点,它看起来像回答您以前的帖子覆盖该途径相当得心应手

我刚才有一个问题,我必须为16位有符号二进制补码通过从MODBUS补数的值。 我需要将其转换为有符号数。 我结束了写这个,这似乎很好地工作。

# convert a 32 bit (prob) integer as though it was 
# a 16 bit 2's complement signed one
def conv_s16(i):
    if (i & 0x8000):
        s16 = -(((~i) & 0xFFFF) + 1)
    else:
        s16 = i
    return s16
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top