美文网首页Python开发
python3 16进制字符串、列表、字符串之间的转换

python3 16进制字符串、列表、字符串之间的转换

作者: 零岁的我 | 来源:发表于2019-03-14 11:53 被阅读0次

    在Python操作数据内容时,多数情况下可能遇到下面3种类型的数据处理:

    hexstring 如:'1C532145697A8B6F'

    str 如:'\x1C\x53\x21\x45\x69\x7A\x8B\x6F'

    list 如:[0x1C, 0x53, 0x21, 0x45, 0x69, 0x7A, 0x8B, 0x6F]

    各种第三方模块(如pyDes),或者自己写的接口中,可能存在由于类型不统一需要在这3种数据中来回切换的情况。

    需要用到的核心的方法如下:

    list() 将对象转换为list

    str() 将对象转换为str

    bytearray() 将对象转换为bytearray

    bytearray.fromhex() 将对象从hexstring转换为bytearray

    binascii.b2a_hex() 将对象从str转换为hexstring


    1. 整形列表转str

    如:[0x53, 0x21, 0x6A] -> '\x53\x21\x6a'

    方法:list -> bytearray -> str

    x = [0x53, 0x21, 0x6A]
    y = str(bytearray(x))

    2. str转整形列表

    如:'\x53\x21\6a' -> [0x53, 0x21, 0x6A]
    方法:逐个字符转成十进制

    x = '\x53\x21\x6a'
    y = [ord(c) for c in x]

    3. 整形列表转换为hex string

    如: [0x53, 0x21, 0x6A] -> '53216A'
    方法:list -> bytearray -> str -> hexstring

    import binascii
    x = [0x53, 0x21, 0x6A]
    y = str(bytearray(x))
    z = binascii.b2a_hex(y)

    4. hex string转换为整形列表

    如: '53216A' -> [0x53, 0x21, 0x6A]
    方法:hexstring -> bytearray -> list

    x = '53216A'
    y = bytearray.fromhex(x)
    z = list(y)

    5. hex string转换为str

    如: '53216A' -> '\x53\x21\x6A'
    方法:hexstring -> bytearray -> str

    x = '53216A'
    y = bytearray.fromhex(x)
    z = str(y)

    以上内容转自:https://blog.csdn.net/diaoxuesong/article/details/72123415#

    相关文章

      网友评论

        本文标题:python3 16进制字符串、列表、字符串之间的转换

        本文链接:https://www.haomeiwen.com/subject/zirqmqtx.html