Python中的数据类型转换

发布时间:2019-10-15 09:04:33编辑:auto阅读(2033)

    基本类型转换

    python3与python2通用函数:

    int('123456',10) # 转换为指定进制的整数
    hex(123456) # 整数转换为16进制串,转换后类型为字符串
    bin(123) # 整数转换为2进制串
    oct(123) # 整数转换为8进制串

    python2专用函数:

    'abcd'.encode('hex') # 字符串转换为16进制串,对应字符的ascii码
    '61626364'.decode('hex') # ascii码转换为对应的字符串

    特别注意:python3比python2多了个字节的数据类型,python3字节专用函数:

    # 字符串转字节
    bytes('str',encoding='utf8')
    'str'.encode(encoding='utf8')
    
    # 字节转字符串
    str(b'byte',encoding='utf8')
    b'str'.decode(encoding='utf8')

    python中的C语言数据类型

    使用第三方库 numpy:

    import numpy as np
    a = np.int32(0xffffffff)  # 会报错,超范围了
    b = np.uint32(0xffffffff)
    print a,b

    使用 ctypes 库:

    from ctypes import *
    a = c_uint32(0xfffffff).value
    b = c_int32(0xffffffff).value # 显示为 -1
    print a,b

    推荐使用ctypes,numpy在超过整数范围时不能强制类型转换

    python中的struct库

    在程序中,输入的多个字符可以被当作一个 WORD 或者 DWORD 甚至 QWORD 的类型进行运算,运算结果放到内存再逐字节取出来!针对这种情况,struct库可以帮我们把几个字符打包成一个整数,或者将一个整数解包成几个字符,还能定义大小端模式!简言之,就是能把所使用的数据转换成在内存中存储的形式

    常用到的一些格式字符

    b char 1
    B uchar 1
    h short 2
    H ushort 2
    i int 4
    I uint 4
    l long 4
    L ulong 4
    q longlong 8
    Q ulonglong 8
    f float 4
    d double 8
    < 小端模式;> 大端模式;默认小端模式

    使用方法:

    from struct import *
    a = 0x41424344
    b = 0x6162
    c = 0x66
    print pack('<IHb',a,b,c)
    print unpack('<IHb','DCBAbaf')[0]

    python中的binascii库

    在 python2 中有encode('hex')函数可以快速将字符串转换为对应 ascii 码的16进制数,在 python3 中只有借助binascii才能实现类似功能!

    import binascii
    binascii.hexlify(str) # 字符串转16进制串
    binascii.unhexlify(hex_str) # 16进制串转字符串

    python中的libnum神器

    这个库的强大之处在于:可以直接将任意进制整数转换为字符串
    常用的一些函数:

    # Encoding=UTF-8
    from libnum import *
    s2n(str) # 字符串转整数
    n2s(n) # 整数转字符串,任意进制数也能直接转,它会先把任意进制数转成16进制数
    s2b(str) # 字符串转2进制位串
    b2s(bin) # 2进制位串转字符串

    END

关键字