http://linchunai1212.blog.163.com/blog/static/35112143201110213411104/
在Python中,bytes和string是不同的东西。由一系列不可改变的Unicode字符组成的叫string。而一系列不可改变的介于0-255之间的数字被称为bytes对象。
来看示例:
>>> by = b'abcd\x65' #使用b''的格式定义bytes对象。每一个byte可以是一个ASCII字符或者十六进制数从\x00到\xff。 >>> by b'abcde' >>> type(by) >>> len(by) #和list和string一样,可以使用内置的len()函数计算bytes对象的长度。 5 >>> by += b'\xff' #和list和string一样,可以使用+操作符连接两个bytes对象。 >>> by b'abcde\xff' >>> len(by) 6 >>> by[0] #可以使用索引来访问bytes对象中的某一个byte 97 >>> by[4] 101 >>> by[0] = 111 #bytes对象是不可改变的,不能对其赋值。 Traceback (most recent call last): File "", line 1, in TypeError: 'bytes' object does not support item assignment
虽然我们不能对bytes对象直接赋值,但是我们可以将bytes转换为一个bytearray对象,bytearray对象是可以被修改的。
>>> barr = bytearray(by) >>> barr bytearray(b'abcde\xff') >>> barr[0] = 120 >>> barr bytearray(b'xbcde\xff')
bytes对象和string是不可以混在一起的。
>>> by
b’abcde\xff’
>>> s = “abcdefg”
>>> by + s
Traceback (most recent call last):
File ““, line 1, in
TypeError: can’t concat bytes to str
但是,bytes和string并不是毫无关系的,bytes对象有一个decode()方法,向该方法传递一个字符编码参数,该方法会返回使用该种编码解码后的字符串。同样的,string有一个encode()方法,完成反向的工作。
>>> string = "深入 Python" >>> len(string) 9 >>> by = string.encode('utf-8') #将字符串编码为UTF8 >>> len(by) 13 >>> by b'\xe6\xb7\xb1\xe5\x85\xa5 Python' >>> by = string.encode('gb18030') #将字符串编码为GB18030 >>> len(by) 11 >>> by b'\xc9\xee\xc8\xeb Python' >>> by.decode('gb18030') #将bytes对象解码 '深入 Python'
分享到:
相关推荐
一.bytes和string区别 ...bytes经过解码decode,转化成string,让我们看,但是注意反编码的编码规则是有范围,\xc8就不是utf8识别的范围; if __name__ == __main__: # 字节对象b b = bshuopython.com
前言 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制...bytes("python", 'ascii') # 字符串,编码 首先来设置一个原始的字符串, Python 3.2.3 (d
主要介绍了Python3中内置类型bytes和str用法及byte和string之间各种编码转换问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型 在unicode编码中 1个中文字符=2个字节,1个英文字符 = 1个字节,切记:ASCII是不能存中文字符的 u
一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。 str类型: >>> s = u'你好' >>> s '你好'...
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 encode(encoding='UTF-8',errors='strict') 以 encoding 指定...
* decimal:python中的float使用双精度的二进制浮点编码来表示的,这种编码导致了小数不能被精确的表示,例如0.1实际上内存中为0.100000000000000001,还有3*0.1 == 0.3 为False. decimal就是为了解决类似的问题的,...
本片博文主要介绍在Python3 环境下把用户名密码编码成字符串。... bytesString = temp_str.encode(encoding="utf-8") # base64 编码 encodestr = base64.b64encode(bytesString) # 解码 decodestr = base64.b64deco
1. 编码问题: ...strcontent = string_at(addr, -1) 3. 从动态链接库中获取函数并调用ctypes from ctypes import * dll = CDLL(YourAPP.dll) dll.YourFunction() 4. 从dll中调用c程序,返回char*的情
1、res.read() ##数据类型:bytes res.read().decode("utf-8") ## 数据类型 :string 2、res.getcode() 3、res.geturl() 3、url编码模块(urllib.parse) 1、urlencode(字典) 原始数据 :kw={"kw":"只手遮天"} ...
bytes数据类型 列表的使用 元组与购物车程序练习 购物车程序练习实例 字符串常用操作 字典的使用 三级菜单实例 本周作业-购物车优化 第3周 作业 上节内容回顾 集合及其运算 文件读与写详解 心灵鸡汤 文件修改详解 ...
maketrans和translate函数是进行字符串字符编码的常用方法。本文着重点在于演示其基本用法和在不同版本下操作的差异。本文提到的2.X版本指2.6以上的版本,3.X版本指3.1以上的版本。 2.X版本把字符串基本分为两种:...
colander_tools.bytes模块包括对编码的二进制数据进行序列化/反序列化的类型。 包括: Base16Bytes Base32Bytes Base64Bytes URLSafeBase64Bytes 开放式对应 colander_tools.mapping模块包括两个Mapping子类,...
安全编码jwt 2-提供一个编码的秘密d_string = 'secret'data_bytes = d_string.encode("utf-8")encoded_secret = base64.b64encode(data_bytes) [c2VjcmV0]code = jwt.encode({'sub':'AccountNUmber.QTVR','nbf':'...