• bytes的转换


    无论是gbk/utf-8,它们都只是一种编码规则,一种把Unicode数据编码成字节数据的规则

    内存中是Unicode编码的
    open()编码方式默认是操作系统的

    Python3.x,默认编码、编码方式均为 encoding=”utf-8

    py2默认ASCII

    内存中                            编码                    存到硬盘
    字符串(Unicode)-----------encode----------->二进制bytes

    硬盘                        解码                     读取到内存
    二进制bytes---------decode-------------->字符串(Unicode)

    1.在文本编辑器(如word/txt/Sublime text3/IDEL/各种解释器等等)编辑文字(中文/英文)时,计算机是
    不认识这些的。在我们保存这份文件数据之前,数据是以Unicode形式存在内存中的。
    2.保存了的存到磁盘上的数据 是通过某种编码方式(如utf-8/gbk等)进行编码(encode) 过的bytes字节串。
    (在保存操作时编辑软件默默地作了编码工作,有它们默认保存文件的编码方式)
    3.再次打开文件 时,软件又默默地(从磁盘)做了解码(decode)工作,即将数据从byte解码成Unicode(到内
    存)。然后以明文呈现给用户。Unicode是离用户更近的数据,byte是离计算机更近的数据

    Pyhon运行.py文件过程:打开文件,解码存磁盘的bytes数据成Unicode数据;接着,解释器将Unicode数据翻译
    成C代码,再转成二进制的数据流;最后,通过控制操作系统调用CPU执行二进制数据,得出结果。整个过程结束。


    # bytes转字符串方式一 b=b'xe9x80x86xe7x81xab' string=str(b,'utf-8') print(string) # bytes转字符串方式二 b=b'xe9x80x86xe7x81xab' string=b.decode() # 第一参数默认utf8,第二参数默认strict print(string) # bytes转字符串方式三 b=b'xe9x80x86xe7x81hahaxab' string=b.decode('utf-8','ignore') # 忽略非法字符,用strict会抛出异常 print(string) # bytes转字符串方式四 b=b'xe9x80x86xe7x81hahaxab' string=b.decode('utf-8','replace') # 用?取代非法字符 print(string) # 字符串转bytes方式一 str1='逆火' b=bytes(str1, encoding='utf-8') print(b) # 字符串转bytes方式二 b=str1.encode('utf-8') print(b)
  • 相关阅读:
    docker下使用caffe的命令记录
    docker安装caffe
    Docker的安装及简单使用
    Docker 安装jupyter notebook
    3*3卷积核实例
    2D image convolution
    nump中的为随机数产生器的seed
    R410自带SAS6IR卡折腾记
    ROS多个网段做隔离
    python easy install时,使用aliyun阿里云镜像提示主机名不匹配的问题
  • 原文地址:https://www.cnblogs.com/lishuaing/p/10554811.html
Copyright © 2020-2023  润新知