【问题标题】:conversion of unicode string in pythonpython中unicode字符串的转换
【发布时间】:2010-09-27 07:43:50
【问题描述】:

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

我需要你们的帮助。

【问题讨论】:

    标签: python string unicode unsigned signed


    【解决方案1】:

    使用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 生成一个包含二进制数字的字节串。

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

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

    【讨论】:

    • @Douglas:我钦佩你的通灵能力(或者你的运气:)。我仍然看不到从问题(如指定)到“使用 int() 将字符串转换为整数”的直接联系……我只建议使用 struct 模块。
    • 但是 res 的类型是字符串。所以我无法对其进行任何操作。我在这里转换以执行此类算术运算。这是不可能的。
    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    相关资源
    最近更新 更多