4

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

我需要你们的帮助。

4

1 回答 1

11

用于int()将字符串转换为整数。Python 没有不同的固定宽度整数,所以你只会得到一种类型的东西。

然后使用struct将整数打包成固定宽度:

res = struct.pack("=B",i) ## uint8_t
res = struct.pack("=b",i) ## int8_t

res = struct.pack("=H",i) ## uint16_t
res = struct.pack("=h",i) ## int16_t

res = struct.pack("=I",i) ## uint32_t
res = struct.pack("=i",i) ## int32_t

res = struct.pack("=Q",i) ## uint64_t
res = struct.pack("=q",i) ## int64_t

res = struct.pack("=f",i) ## float
res = struct.pack("=d",i) ## double

struct生成一个包含二进制数字的字节串。

编辑:从评论看来,您只想将字符串(十进制数字)转换为整数。只是使用int()它,但是你不会得到指定类型的所有复杂的溢出/下溢语义。您无法在 python 中重现它,至少在不编写大量代码的情况下无法重现。

我认为,如果您需要更多帮助,则必须更准确地了解您想要实现的目标。

于 2008-12-17T11:58:56.973 回答