Python字节数组【bytes/bytearray】
bytes
>>> type(b'xxxxx')
<class 'bytes'> >>> type('xxxxx')
<class 'str'>
bytes是byte的序列,而str是unicode的序列。
1、str 转换成 bytes 用 encode() 方法:(注意:这有个坑,str1.encode不加括号和加括号是不一样的,自己试试,初学貌似2.0不影响,3.0变了,不加括号开发环境语法不报错)
str = '人生苦短,我用Python!'
bytes = str.encode()
print(bytes)
输出:
b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
2、好了,反转换 decode() :
bytes = b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
str = bytes.decode()
print(str)
输出:
人生苦短,我用Python!
bytearray
1、bytearray和bytes不一样的地方在于,bytearray是可变的。
str = '人生苦短,我用Python!'
bytes = bytearray(str.encode())
bytes = bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
str = bytes.decode()
print(str)
输出:
'人生苦短,我用Python!'
2、改变bytearray
bytes[:6] = bytearray('生命'.encode())
bytes = bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
str = bytes.decode()
print(str)
输出:
生命苦短,我用Python!
各种 bytes :
a = bytes('abc', 'utf-8')
print(a)
> b'abc'
b = bytes(1)
print(b)
> b'\x00'
c = bytes([2,3,6,8])
print(c)
> b'\x02\x03\x06\x08'
print(b"Python")
> b'Python'
python = (b'P' b'y' b"t" b'o' b'n')
print(python)
> b'Pyton'
Bytes 代表的是(二进制)数字的序列,只不过在是通过 ASCII 编码之后才是我们看到的字符形式,如果我们单独取出一个字节,它仍然是一个数字:
print(b"Python"[0])
> 80
我们可以用 b"*" 的形式创建一个字节类型,前提条件是这里的 * 必须是 ASCII 中可用的字符,否则将会超出限制:
print(b"雨")
> File "", line 1
print(b"雨")
^
SyntaxError: bytes can only contain ASCII literal characters.
错误提示说明:字节类型只能允许 ASCII 字符(0~127~255)。ASCII 表里面所有的字符只占据了 [31, 127]
那对于这一范围之外的数字我们要怎么才能表示为字节类型?答案就是用特殊的转义符号x+十六进制数字 :
print(b'xff'[0])
> 255
print(b'x24')
> b'$'
反过来我们也可以将数字(0~255)转变成转义后的字节类型:
print(bytes([24]))
> b'x18'
print(bytes([36,36,36])) # 记住字节类型是一个序列
或者直接从十六进制得来:
print(bytes.fromhex("7b 7d"))
> b'{}'
# 逆运算
print(b'{ }'.hex())
> 7b207d
int(b' '.hex(), base=16)
> 32
测试的一些代码:
print("$".encode('ascii'))
> b'$'
print("$".encode('ascii')[0])
> 36
ba = bytearray(b'hello')
ba[0:1] = b'w'
print(ba)
bytearray(b'wello')
可是如果我们对一些奇怪的字符进行 ASCII 编码,就会发生异常:ordinal not in range(128)


Python字节数组【bytes/bytearray】的更多相关文章
- python 字节数组和十六进制字符串互转
. 字节数组 --> 十六进制字符串 >>> a = 'ab' >>> a.encode('hex') ' . 十六进制字符串 --> 字节数组 > ...
- python字符串str和字节数组bytes相互转化
1 引言 后续待补充 2 代码 b = b"Hello, world!" # bytes s = "Hello, world!" # string print( ...
- Python学习笔记015——序列(字节数组 bytearray)
1 序列 常见的序列有:list tuple str bytes(字节串) bytearray 2 字节数组bytearray 可变的字节序列,相当于bytes的可变版本. 3 创建函数by ...
- 【Python】【内置函数】【bytes&bytearray&str&array】
[bytes] 英文文档: class bytes([source[, encoding[, errors]]]) Return a new “bytes” object, which is an i ...
- python_迭代器和生成器、字节串、字节数组
迭代器 iterator 和 生成器 generator 什么是迭代器:迭代器就是获取迭代对象中元素的工具,迭代器是由可迭代对象生成的 1.迭代器是指用iter(可迭代对象)函数返回的对象(实例) ...
- python 内置函数bytearray
1.参考文档 class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cl ...
- Python内置函数—bytearray
英文文档: class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cla ...
- java对获取的字节数组进行处理
java对获取的字节数组bytes[]进行处理: 第一种,直接将该字节数组转换为字符串(部分): String content = ,); //从位置0开始获取2个字节 这样,对获取的数据报进行全部转 ...
- ethereum(以太坊)(十一)--字节数组(一)
pragma solidity ^0.4.0; contract byte1{ /* 固定大小字节数组(Fixed-size byte arrays) 固定大小字节数组可以通过bytes1,bytes ...
随机推荐
- U盘中的快捷方式解析
很多人都有使用绿色软件的习惯,在这里我简单称其为Portable App 将这些软甲放到U盘中随身携带,便于我们使用更加符合自身习惯的功能软件. 相信习惯将软件放到U盘启动都会碰到一个问题,就是每次打 ...
- Redis其他常用操作
详细Redis操作手册: http://doc.redisfans.com/ ============================================================= ...
- web 本地存储 (localStorage、sessionStorage)
web 本地存储 (localStorage.sessionStorage,cookie) localStorage(长期储存):即使关闭浏览器数据也不会删除,除非使用localStorage.cle ...
- day16-面向对象基础(三)
今日摘要 今天主要整理一下这俩天学习的内容,面向对象也快学完了,深刻的认识到面向对象就是一个思想,怎么把思想理解了,其他也就不是什么事了 1.类的约束 2.类的类方法与静态方法 3.类的反射 4.类的 ...
- [SCOI2016]萌萌哒
Luogu P3295 mrclr两周前做的题让蒟蒻的我现在做? 第一眼组合计数,如果把数字相同的数位看作一个整体,除了第一位不能为零,剩下的每一位都有$0$~$9$十种. 设不同的位数为$x$,那么 ...
- PyInstaller安装使用方法
PyInstaller可以把Python应用程序及其所有依赖项捆绑到一个包中.用户可以在不安装Python解释器或任何模块的情况下运行打包的应用程序.PyInstaller支持Python 2.7和P ...
- 不要再被骗了------QQ盗号原理大揭秘
前言 相信大家在懵懂无知的时候都有被盗号的经历吧,QQ胡乱的加好友,突然有个好友传了个文件给你,打开以后发现QQ竟然显示强制下线,然后再也上不去了QAQ,很明显,QQ号被人盗了.最近也是很多小伙伴私信 ...
- Mysql完整约束性
一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...
- Qt中的QWebView
一.Webkit了解 Webkit是一个开源的浏览器引擎,chrome也使用了作为核心.Qt中对Webkit做了封装,主要有以下几个类: QWebView :最常用的类,作为一个窗体控件 QWeb ...
- Kubernetes一键部署利器:kubeadm
要真正发挥容器技术的实力,你就不能仅仅局限于对 Linux 容器本身的钻研和使用. 这些知识更适合作为你的技术储备,以便在需要的时候可以帮你更快的定位问题,并解决问题. 而更深入的学习容器技术的关键在 ...