Python 字符串与二进制转换

  1. 字符串转16进制
  2. 16进制转字符串
  3. bytearray 和 string 之间转换

字符串转16进制

python 2.7

>>> "hello".encode('hex')
'68656c6c6f'
>>> import binascii
>>> binascii.hexlify('hello'.encode('utf8'))  # 不加 encode 也行
'68656c6c6f'
>>> binascii.b2a_hex('hello')  # 同样加不加 encode 都行,返回结果是 str 类型
'68656c6c6f'

>>> import codecs
>>> codecs.getencoder('hex_codec')(b'hello')[0]  # hex_codec,hex 均可,以下有没有 b 均可
'68656c6c6f'
>>> codecs.getencoder('hex')(b'hello')[0]
'68656c6c6f'
>>> codecs.encode(b"hello", 'hex_codec')  # 同样 hex_codec,hex 均可
'68656c6c6f'

python 3

>>> "hello".encode('hex')  # 不可用
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    "hello".encode('hex')
LookupError: 'hex' is not a text encoding; use codecs.encode() to handle arbitrary codecs

>>> s = "hello".encode("utf-8").hex()
>>> s
'68656c6c6f'
>>> bytes(s, "utf-8")
b'68656c6c6f'
>>> b'hello'.hex()
'68656c6c6f'

>>> import binascii
>>> binascii.hexlify('hello'.encode('utf8'))  # 参数必须是 bytes 类型
b'68656c6c6f'
>>> binascii.b2a_hex('hello'.encode('utf8'))  # 参数必须是 bytes 类型
b'68656c6c6f'

>>> import codecs
>>> codecs.getencoder('hex_codec')(b'hello')[0]  # hex_codec,hex 均可,必须是 bytes 类型
b'68656c6c6f'
>>> codecs.getencoder('hex')(b'hello')[0]
b'68656c6c6f'
>>> codecs.encode(b"hello", 'hex_codec')  # 同样 hex_codec,hex 均可
b'68656c6c6f'

16进制转字符串

python 2.7

>>> binascii.unhexlify('68656c6c6f')
'hello'
>>> binascii.unhexlify(b'68656c6c6f')
'hello'

>>> import codecs
>>> codecs.decode(b"68656c6c6f", 'hex')  # hex_codec,hex 均可,有没有 b 均可
'hello'

python 3

>>> bytes.fromhex('68656c6c6f')
b'hello'

>>> binascii.unhexlify('68656c6c6f')
b'hello'
>>> binascii.unhexlify(b'68656c6c6f')
b'hello'

>>> import codecs
>>> codecs.decode(b"68656c6c6f", 'hex')  # hex_codec,hex 均可,必须是 bytes 类型
'hello'

bytearray 和 string 之间转换

>>> bytearray.fromhex("68656c6c6f")
bytearray(b'hello')
>>> bytearray(b'hello')
bytearray(b'hello')

>>> str(bytearray(b'hello'))  # 2.7
'hello'

>>> str(bytearray(b'hello'), 'utf-8')  # 3
'hello'

https://stackoverflow.com/questions/2340319/python-3-1-1-string-to-hex
https://stackoverflow.com/questions/6624453/whats-the-correct-way-to-convert-bytes-to-a-hex-string-in-python-3


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com

文章标题:Python 字符串与二进制转换

文章字数:593

本文作者:Bin

发布时间:2018-09-20, 16:06:22

最后更新:2019-08-06, 00:07:35

原始链接:http://coolview.github.io/2018/09/20/Python/Python%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%8E%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录