专栏首页盛开在夏天的太阳内置函数 -- bytes -- 字节码与字符串相互转换

内置函数 -- bytes -- 字节码与字符串相互转换

说明:

1. 返回值为一个新的不可修改字节数组,每个数字元素都必须在0 - 255范围内,是bytearray函数的具有相同的行为,差别仅仅是返回的字节数组不可修改。

2. 当3个参数都不传的时候,返回长度为0的字节数组

>>> b = bytes()
>>> b
b''
>>> len(b)
0

3. 当source参数为字符串时,encoding参数也必须提供,函数将字符串使用str.encode方法转换成字节数组

>>> bytes('中文') #需传入编码格式
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    bytes('中文')
TypeError: string argument without an encoding
>>> bytes('中文','utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

4. 当source参数为整数时,返回这个整数所指定长度的空字节数组

>>> bytes(2)
b'\x00\x00'
>>> bytes(-2) #整数需大于0,用于做数组长度
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    bytes(-2)
ValueError: negative count

5. 当source参数为实现了buffer接口的object对象时,那么将使用只读方式将字节读取到字节数组后返回

6. 当source参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组里

>>> bytes([1,2,3])
b'\x01\x02\x03'
>>> bytes([256,2,3])
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    bytes([256,2,3])
ValueError: bytes must be in range(0, 256)

7. 返回数组不可修改

>>> b = bytes(10)
>>> b
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> b[0]
0
>>> b[1] = 1 #不可修改
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    b[1] = 1
TypeError: 'bytes' object does not support item assignment

>>> b = bytearray(10)
>>> b
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
>>> b[1] = 1 #可修改
>>> b
bytearray(b'\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00')

内容总结:

  字节码转换为字符串:

1 s = "中国人,美国人"
2 byte_str = bytes(s,encoding="utf-8")
3 print(byte_str)

  输出结果:

b'\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba,\xe7\xbe\x8e\xe5\x9b\xbd\xe4\xba\xba'

  字符串转换为字节码:

1 tr_str = str(byte_str,encoding="utf-8")
2 print(tr_str)

  输出结果:

中国人,美国人

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 1. 开始Kubernetes: k8s

      本节目标: 要求会画bolg系统和kubernetes系统的架构图, 并且知道架构每一部分的作用.

    用户7798898
  • 2.1 Kubernetes--Pod

      自主式Pod是不被控制器管理的Pod. 这种Pod死亡以后, 不会被重新启动. 这个Pod死了以后, 副本数就达不到期望值了, 也不会有人去创建一个新的Po...

    用户7798898
  • SecureCRT + Tmux 分屏 高效开发

    然后, 右击选择"发送交互到所有标签" ,然后发送一条命令, 所有打开的终端都会接收到

    用户7798898
  • MikroTik-SMB 测试之 Mutiny-Fuzzer

    Mutiny是由思科研究人员开发的一款基于变异的网络fuzz框架,其主要原理是通过从数据包(如pcap文件)中解析协议请求并生成一个.fuzzer文件,然后基于...

    信安之路
  • Bson类似于Protocol Buffer的数据形式,比json更轻量级更高效

    BSON是Binary JSON的缩写,是一种类json的一种二进制形式的存储格式。 它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON在JSON基...

    AWeiLoveAndroid
  • Hacker必备技能-反向shell进阶

    “这是一篇对于实战很有用的文章,因为实战不比靶场环境,会有各种运维人员和其他维护者设置的障碍,就算找到漏洞,拿到shell也不是那么轻松,本文将介绍一些在lin...

    Gamma实验室
  • 关于Android中WebView远程代码执行漏洞浅析

    Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInt...

    砸漏
  • 【STM32学习记录3】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI

    某宝上买的OLED,IIC/SPI都可以,买来看的时候发现背面焊的是SPI。板子上又没有硬件SPI,只好用软件模拟SPI。很久之前学的了,现在把它写在CSDN上...

    AXYZdong
  • 小生归一(五)md5扩展长度攻击

    1、MD5加密过程中512比特(64字节)为一组,属于分组加密,而且在运算的过程中,将512比特分为32bit*16块,分块运算。(先把需要加密的进行ASCII...

    7089bAt@PowerLi
  • CVE-2020-0796,又是一场补丁攻坚战

    每年真正比较有影响力的漏洞编号,其实并不多,而这个CVE-2020-0796,就是我们在疫情之下全面返岗伊始,最值得去重视的一个。

    Bypass

扫码关注云+社区

领取腾讯云代金券