栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-将二进制转换为ASCII,反之亦然

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-将二进制转换为ASCII,反之亦然

对于[ -~]Python 2 范围内的ASCII字符:

>>> import binascii>>> bin(int(binascii.hexlify('hello'), 16))'0b110100001100101011011000110110001101111'

相反:

>>> n = int('0b110100001100101011011000110110001101111', 2)>>> binascii.unhexlify('%x' % n)'hello'

在Python 3.2+中:

>>> bin(int.from_bytes('hello'.enpre(), 'big'))'0b110100001100101011011000110110001101111'

相反:

>>> n = int('0b110100001100101011011000110110001101111', 2)>>> n.to_bytes((n.bit_length() + 7) // 8, 'big').depre()'hello'

要在Python中支持所有Unipre字符3:

def text_to_bits(text, encoding='utf-8', errors='surrogatepass'):    bits = bin(int.from_bytes(text.enpre(encoding, errors), 'big'))[2:]    return bits.zfill(8 * ((len(bits) + 7) // 8))def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'):    n = int(bits, 2)    return n.to_bytes((n.bit_length() + 7) // 8, 'big').depre(encoding, errors) or ''

这是与Python 2/3兼容的单源版本:

import binasciidef text_to_bits(text, encoding='utf-8', errors='surrogatepass'):    bits = bin(int(binascii.hexlify(text.enpre(encoding, errors)), 16))[2:]    return bits.zfill(8 * ((len(bits) + 7) // 8))def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'):    n = int(bits, 2)    return int2bytes(n).depre(encoding, errors)def int2bytes(i):    hex_string = '%x' % i    n = len(hex_string)    return binascii.unhexlify(hex_string.zfill(n + (n & 1)))

>>> text_to_bits('hello')'0110100001100101011011000110110001101111'>>> text_from_bits('110100001100101011011000110110001101111') == u'hello'True


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456352.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号