python中bytearray,bytes转str的坑

2024-03-23 04:58
文章标签 python str bytes bytearray

本文主要是介绍python中bytearray,bytes转str的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上干货。

python2

对于bytes

# coding=utf-8
testBytes_1 = b"abcd"
testBytes_2 = b"\x00\x01"print "直接打印testBytes_1\t", testBytes_1
print "直接打印testBytes_2\t", testBytes_2
print "解码testBytes_1\t", testBytes_1.decode('utf-8')
print "编码testBytes_2\t", testBytes_2.encode('hex')>>>直接打印testBytes_1 abcd
>>>直接打印testBytes_2 <0x00><0x01>
>>>解码testBytes_1     abcd
>>>编码testBytes_2     0001

bytes可以直接使用decode和encode函数进行转换

对于bytearray

# coding=utf-8
testBytes_1 = b"abcd"
testBytes_2 = b"\x00\x01"
testBytearray_1 = bytearray(testBytes_1)
testBytearray_2 = bytearray(testBytes_2)print "直接打印testBytes_1\t", testBytearray_1
print "直接打印testBytes_2\t", testBytearray_2
print "解码testBytes_1\t", testBytearray_1.decode('utf-8')
temp = ""
for byte in testBytearray_2:t = hex(byte)[2:]if len(t) == 1:t = '0' + ttemp += t
print "解码testBytes_2\t", temp>>>直接打印testBytearray_1    abcd
>>>直接打印testBytearray_2    <0x00><0x01>
>>>编码testBytearray_1        abcd
>>>解码testBytearray_2        0001

bytearray没有encode函数,对于二进制的,如果执行testBytearray_2.encode('hex'),则报错AttributeError: 'bytearray' object has no attribute 'encode'

我能够想到的办法就是遍历bytearray,将每个byte转成十六进制字符。byte对python来讲,类型是数字,所以使用hex函数将数字转换为十六进制字符串。

python3

对于bytes

# coding=utf-8
import binasciitestBytes_1 = b'abcd'
testBytes_2 = b'\x00\x01'print("直接打印testBytes_1\t", testBytes_1)
print("直接打印testBytes_2\t", testBytes_2)
print("解码testBytes_1\t", testBytes_1.decode('utf-8'))
print("编码testBytes_2\t", binascii.b2a_hex(testBytes_2).decode())>>> 直接打印testBytes_1	 b'abcd'
>>> 直接打印testBytes_2	 b'\x00\x01'
>>> 解码testBytes_1	     abcd
>>> 编码testBytes_2	     0001

对于bytes,不像python2有encode方法,所以对于十六进制来说,只能使用binascii库,将bytes编为ascii码的bytes。如果就是要使用encode(),那么你将收获一条报错。

对于bytearray

testBytes_1 = b'abcd'
testBytes_2 = b'\x00\x01'
testBytearray_1 = bytearray(testBytes_1)
testBytearray_2 = bytearray(testBytes_2)print("直接打印testBytearray_1\t", testBytearray_1)
print("直接打印testBytearray_2\t", testBytearray_2)
print("解码testBytearray_1\t", testBytearray_1.decode('utf-8'))
temp = ""
for byte in testBytearray_2:t = hex(byte)[2:]if len(t) == 1:t = '0' + ttemp += t
print('解码testBytearray_1\t', temp)>>> 直接打印testBytearray_1	 bytearray(b'abcd')
>>> 直接打印testBytearray_2	 bytearray(b'\x00\x01')
>>> 解码testBytearray_1	     abcd
>>> 解码testBytearray_1	     0001

这个和python2还是很像的。

搞清楚bytes和bytearray

为什么Python弱化类型?为什么Python弱化类型!为什么Python弱化类型!!!

因为类型的关系,在我debug查资料的时候,一直默认bytes和bytearray是一种东西,就像二哈和阿拉斯加雪橇犬,产品经理和二哈,并没有本质的区别。

具体可以看这篇博客

python bytes和bytearray、编码和解码 - 骏马金龙 - 博客园

最后再补充一点,这也是为啥我突然要搞清楚这个bytes和bytearray。

对于python2来讲,socket使用recv函数获取到的数据默认是str类型的;python3默认是bytes。这一点在官方socket api也有介绍,使用前请注意。

完事,睡觉!

这篇关于python中bytearray,bytes转str的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837195

相关文章

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring