python3 字节与数字、字符等互转的方法。int、struct库等方法
文章目录
- int 与 bytes转换
- int 转 bytes
- bytes 转 int
- str 与 bytes互转
- 其他格式转字节
- 格式说明
- 转字节
- 字节转其他
字节在存储的时候根据存储的格式不同,可能会有大端小端之分,如果是数字,还有有符号无符号的区分,所以在自己处理的时候可能会有一些麻烦。所以记录一下转换的方法,希望有同样遇到的人可以对其提供一些帮助。
常见的数据类型:
数据类型 | 字节长度 | 取值范围 |
---|---|---|
int8 | 1 | -128 ~ 127 |
uint8 | 1 | 0 ~ 255 |
int16 | 2 | -32768 ~ 32767 |
uint16 | 2 | 0 ~ 65535 |
int32 | 4 | -2^31 ~ 2^31 -1 |
uint32 | 4 | 0 ~ 2^32 -1 |
int 与 bytes转换
int与bytes转换,在python3中还是比较简单的,int已经自带了方法,可以直接使用,不过需要事先确定:数据存储方式是大端存储还是小端存储,数据类型是什么。
int 转 bytes
例子:
# int 转 bytes
int.to_bytes(字节长度, 大端/小端存储, 关键字参数有符号还是无符号)
- 大端:big
- 小端:little# 例如:将数字128存储为int16类型的字节,在计算机里小端存储
# 如果实际数字超出了存储字节的长度,将会报错
int(128).to_bytes(2, 'little', signed=True)# 结果:b'\x80\x00'
bytes 转 int
例子:
# bytes 转 int
int.from_bytes(字节, 大端/小端存储, 关键字参数有符号还是无符号)
- 大端:big
- 小端:little# 例如:将刚刚存入的结果转回来
int.from_bytes(b'\x80\x00', 'little', signed=True)
# 如果你使用大端模式解析出来,你会发现一个完全不一样的数字
# 如果是只有一个字节的数据,大端小端也就无所谓了
str 与 bytes互转
这个还是比较简单的。
例如:
# str 转 bytes
# 这个转化只需要对str进行编码就好了,默认使用 utf-8编码
'章三'.encode()# bytes 转 str
# 相应的,只需要对bytes数据进行解码,默认使用 utf-8 编码
b''.decode()
其他格式转字节
其他格式转字节的话,可以借助struct
库来完成,这里简单介绍一下它的使用方式和一些参数。
在使用struct
库进行转化的时候,需要一个格式字符串说明数据是什么类型的,什么存储方式之类的信息,所以先介绍一下他的格式说明。
格式说明
格式设置字符如下:
第一个字符:存储方式
符号 | 说明 |
---|---|
@ | 本机存储顺序、存储大小、存储队列 (默认选项) |
= | 本机存储顺序,标准存储大小、存储队列 |
< | 小端序、标准存储大小、存储队列 |
> | 大端序、标准存储大小、存储队列 |
! | 与 > 相同 |
其余字符表示参数的类型,必须完全匹配;这些可以在十进制重复计数之前:
符号 | 说明 |
---|---|
x | 填充字节,不是数据 |
c | 字符 |
b | byte类型,1字节整型 |
B | 无符号byte |
? | _Bool (需要 C99;如果不可用,则使用 char 代替) |
h | short类型 2字节整型 |
H | 无符号short |
i | int类型 4字节整型 |
I(大写i) | 无符号int |
l(小写L) | long类型 8字节整型 |
L | 无符号long |
f | float类型 (32为浮点类型) |
d | double类型 |
e | half-float (16位浮点类型) |
s | string类型,也可以理解成字节数组。需要在s前存在一个十进制数字表示字符串的长度 |
格式为:
存储方式 + 类型
例如:
# 小端存储的 uinit32类型
<I# 大端存储的 float32 类型
>f# 小端存储的 10个字节的字符串数据
<10s
转字节
转字节使用struct.pack()
方法
该方法可以接收多个参数,分别是:
- 格式
- 变量1
- 变量2
- …
单个转
例如:
# 还是将128转化小端存储的,为2个字节存储的有符号数字类型
struct.pack('<h', 128)
# 因为是2个字节有符号的数字,所以应该选择 short 类型 所以格式为 '<h'
# 结果为:b'\x80\x00'# 将128.0 转化为小端存储的float类型的字节
struct.pack('<f', 128.)
# 结果为: b'\x00\x00\x00C'
转多个
例如:
# 第一个是无符号整数 128 ,然后后变有一个3个字节的字符串 '秀', 使用小端存储
struct.pack('<I3s', 128, u'秀'.encode())
# 结果:b'\x80\x00\x00\x00\xe7\xa7\x80'
字节转其他
字节转化为其他类型,使用 struct.unpack()
方法,结果是一个元组
该方法可以接收2个参数,分别是:
- 格式
- 字节
例如:
# 将第一个是无符号整数 128 ,然后后变有一个3个字节的字符串 '秀', 使用小端存储的数据转回来
struct.unpack('<I3s', b'\x80\x00\x00\x00\xe7\xa7\x80')
# 结果为:(128, b'\xe7\xa7\x80')# 将使用小端存储的128.0的字节转换回来
struct.unpack('<f', b'\x00\x00\x00C')
# 结果为: (128.0,)
希望可以帮到你!
曾经沧海难为水,
除却巫山不是云。
取次花丛懒回顾,
半缘修道半缘君。
相关文章:
python3 字节与数字、字符等互转的方法。int、struct库等方法
文章目录int 与 bytes转换int 转 bytesbytes 转 intstr 与 bytes互转其他格式转字节格式说明转字节字节转其他字节在存储的时候根据存储的格式不同,可能会有大端小端之分,如果是数字,还有有符号无符号的区分,所以在自己处理的时候…...
人脸检测的5种方式
文章内容: 1)人脸检测的5种方法 1. Haar cascade opencv 2. HOG Dlib 3. CNN Dlib 4. SSD 5. MTCNN 一。人脸检测的5种方法实现 1. Haar cascade opencv Haar是专门用来检测边缘特征的。基本流程如下: 第1步,读取图片 img …...
华为OD机试 - 乘积最大值(Python)
乘积最大值 题目 给定一个元素类型为小写字符串的数组 请计算两个没有相同字符的元素长度乘积的最大值 如果没有符合条件的两个元素返回0 输入 输入为一个半角逗号分割的小写字符串数组 2 <= 数组长度 <= 100 0 < 字符串长度 <= 50 输出 两个没有相同字符的元…...
【CMU15-445数据库】bustub Project #2:B+ Tree(上)
(最近两个月学校项目有亿点忙,鸽得有点久,先来把 Project 2 补上) 本节实验文档地址:Project #2 - BTree Project 2 要实现的是数据结构课上都会讲的一个经典结构 B 树,但是相信大多数的同学(…...
功率放大器在lamb波方向算法的损伤定位中的应用
实验名称:基于PZT结Lamb波方向算法的损伤定位方法研究方向:损伤定位测试目的:Lamb波是在具有自由边界的固体板或层状结构中传输的一种弹性导波,由于其本身的传播特性,如沿传播路径衰减小,能量损失小&#x…...
时的科技迎1亿融资,这辆“空中的士”能否实现真正飞行?
近期,进行载人eVTOL的研发、生产和销售的时的科技宣布完成1亿元Pre-A轮融资,成立不到两年,这已是时的科技的第三轮融资,此前,时的科技已获得蓝驰创投和德迅投资千万美元种子轮投资。在不少人看来,时的科技所…...
idea 折叠代码块技巧 关于<editor-fold>
最近在使用delombok插件的时候,发现了一个有意思的小技巧 以前用VSstudio写代码的时候。经常使用代码块折叠的方法。但是在写java的时候,没怎么使用过 VSStudio中的写法 即 #region xxx ... your great coding #endregion这样在浏览的时候,…...
python|第五章考试题及练习题
本篇文章是对北京理工大学嵩天老师的《Python语言程序设计》第五章考试题及练习题的学习记录。 一、考试题 1、随机密码生成 问题描述: 描述 补充编程模板中代码,完成如下功能:…...
DIY生日蛋糕笔记
自制6寸生日蛋糕笔记 实验环境: 长帝CRTF32PD搪瓷烤箱32升, 九阳电动打蛋器, 裱花盘一套 蛋糕盒子 称重器 硅胶刀 两个大碗1号和2号。 材料: 参考: https://www.bilibili.com/video/BV1t34y1Z7mL/?spm_id_from333…...
MybatisPlus------常用注解和逻辑删除以及设置统一前缀以及主键生成策略(六)
MybatisPlus------常用注解以及设置统一前缀以及主键生成策略(六) 在使用MybatisPlus的过程中时,实力类的Mapper继承BaseMapper,此时不要添加TableName注解也能够对表数据实现增删改查。 // mybatispuls 提供了接口实现单表的增…...
JQuery工具框架
JQuery工具框架 直接使用js编程比较麻烦,而且还必须考虑浏览器的差异性。 为了简化javascript的开发,一些javascript库诞生了。当今流行的javascript库有:jQuery诞生于2005 年,Dojo、 EXT_JS、DWR、YUI… jQuery是John Resig在…...
同一个整型常量怎样在不同进制间之间转换?
整型常量可以分别用二进制、八进制、十进制和十六进制表示,不同的进制并不影响数据本身的大小,同一个整型常量可以在不同进制之间转换,具体转换方式如下。1.十进制和二进制之间的转换(1)十进制转二进制。十进制转换成二进制就是一个除以2取余…...
UVa 225 Golygons 黄金图形 暴力搜索 剪枝 状态判断
题目链接:Golygons 题目描述: 给定nnn和kkk个障碍物的坐标,你需要走nnn次,第一次走一个单位距离,第二次走二个单位距离,…,第nnn次走nnn个单位距离。走得过程中不能穿过或者到达障碍物所在的点&…...
PowerShell中的对象是神马?
在PowerShell中,无处不在体现出一个概念,这个概念是什么呢?就是对象,对象是面向对象的语言中非常重要的概念,PowerShell的底层是.net,也是面向对象的语言,因此它也继承了面向对象的语言的语法特性。但是很多人在使用PowerShell 语言的时候会觉得有些疑惑,到底什么是Pow…...
Proxy lab
CSAPP Proxy Lab 本实验需要实现一个web代理服务器,实现逐步从迭代到并发,到最终的具有缓存功能的并发代理服务器。 Web 代理是充当 Web 浏览器和终端服务器之间的中间人的程序。浏览器不是直接联系终端服务器获取网页,而是联系代理&#x…...
【机器学习】Sklearn 集成学习-投票分类器(VoteClassifier)
前言 在【机器学习】集成学习基础概念介绍中有提到过,集成学习的结合策略包括: 平均法、投票法和学习法。sklearn.ensemble库中的包含投票分类器(Voting Classifier) 和投票回归器(Voting Regressor),分别对回归任务和分类任务的…...
Day892.MySql读写分离过期读问题 -MySQL实战
MySql读写分离过期读问题 Hi,我是阿昌,今天学习记录的是关于MySql读写分离过期读问题的内容。 一主多从架构的应用场景:读写分离,以及怎么处理主备延迟导致的读写分离问题。 一主多从的结构,其实就是读写分离的基本…...
无线蓝牙耳机哪个品牌音质好?性价比高音质好的蓝牙耳机排行榜
其实蓝牙耳机购买者最担忧的就是音质问题,怕拿到手的蓝牙耳机低频过重又闷又糊,听歌闷耳的问题,但从2021年蓝牙技术开始突飞猛进后,蓝牙耳机的音质、连接甚至是功能都发生了很大的变化,下面我分享几款性价比高音质的蓝…...
店铺微信公众号怎么创建?
有些小伙伴问店铺微信公众号怎么创建,在解答这个问题之前,先简单说说店铺和微信公众号关系: 店铺一般是指小程序店铺,商家通过小程序店铺来卖货;微信公众号则是一个发布信息的平台。但是两者之间可以打通,…...
goLang Mutex用法案例详解
Golang以其并发性Goroutines而闻名。不仅是并发,还有更多。 因此,在这种情况下,我们必须确保多个goroutines不应该同时试图修改资源,从而导致冲突。 为了确保资源一次只能被一个goroutine访问,我们可以使用一个叫做sync.Mutex的东西。 This concept is called mutual ex…...
java常见的异常
异常分类 Throwable 是java异常的顶级类,所有异常都继承于这个类。 Error,Exception是异常类的两个大分类。 Error Error是非程序异常,即程序不能捕获的异常,一般是编译或者系统性的错误,如OutOfMemorry内存溢出异常等。 Exc…...
从0开始学python -33
Python3 输入和输出 -1 在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 — 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法ÿ…...
ModuleNotFoundError: No module named ‘glfw‘ 解决方案
错误描述 env gym.make(env_id) File "/opt/conda/envs/WNPG/lib/python3.8/site-packages/gym/envs/registration.py", line 619, in make env_creator load(spec_.entry_point) File "/opt/conda/envs/WNPG/lib/python3.8/site-packages/gym/envs/r…...
RadZen运行和部署,生成业务web应用程序
RadZen运行和部署,生成业务web应用程序 快速简单地生成业务web应用程序,可视化地构建和启动web程序,而我们为您创建新代码。 从信息开始 连接到数据库。Radzen推断您的信息并生成一个功能完备的web应用程序。支持MSSQL REST服务。 微调 添加页面或编辑生…...
分享7个比B站更刺激的老司机网站,别轻易点开
俗话说摸鱼一时爽,一直摸一直爽,作为一个程序员老司机了,一头乌黑浓密的头发还时不时被同事调侃,就靠这10个网站让我健康生活,不建议经常性使用,因为还有一句俗话,那就是“摸鱼一时爽࿰…...
浅析:如何在Vue3+Vite中使用JSX
目录 0. Vue3,Vite,JSX 三者的关系 JSX介绍 在 Vue3 中使用 JSX 安装插件(vitejs/plugin-vue-jsx) 新建 jsx 文件 语法 补充知识:注意事项 0. Vue3,Vite,JSX 三者的关系 Vue3、Vite 和 …...
开发小程序需要什么技术?
小程序是一种新的开发能力,相比于原生APP 开发周期短,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。 开发小程序需要什么技术? 前端技术基础:html、js、css。具体到小程序&a…...
7个营销人员常见的社交媒体问题以及解决方法
在如今的数字营销时代,许多营销人员都害怕在社交媒体上犯错。他们担心他们的社交媒体中的失误会演变成一场公关危机。面对一些常见的社交媒体问题,您需要知道如何避免和解决。对于数字营销人员来说,在现在这个信息互通,每时每刻都…...
BFC 是什么
在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了?这两栏布局怎么没法自适应?这两个元素的间距怎么有点奇怪的样子?...... 原因是元素之间相互的影响,导致了意料之外的情况,这里就涉及…...
07 react+echart+大屏
reactechart大屏大屏ECharts 图表实际步骤React Typescript搭建大屏项目,并实现屏幕适配flexible rem实现适配1. 安装插件对echarts进行的React封装,可以用于React项目中,支持JS、TS如何使用完整例子官网参考大屏 ECharts 图表 ECharts 图…...
做视频的软件模板下载网站有哪些内容/优化设计四年级上册语文答案
近日,由深度学习技术及应用国家工程实验室与百度联合发起的 AICA|首席 AI 架构师培养计划第五期正式结业。经过为期半年的学习,最终来自中国石油、中国四维测绘、中国石化、霍尼韦尔、中国海油、法国电信、中国东方航空、中国铁塔等企业的57位…...
网站建设从零开始 教程/成品网站货源1
本文讲的是 IoC真的重要吗?细节决定成败,安全行业已经从仅专注特征码,转变到了将IoC(入侵指标)也纳入进来。因为各方面看来,IoC都更加便捷,也兼容各种不同检测平台。是时候重视IoC并更加有效地使…...
网站开发客户提供素材/深圳哪里有网络推广渠避
linux环境下如何查看docker是否已安装_网站服务器运行维护linux环境下查看docker是否已安装的方法是:可以通过执行【docker version】命令查看,如果输出信息中包含client和service两部分,则说明docker已经安装成功了。1、查看所有的docker容器…...
兰州做家教去哪个网站比较好/网络推广渠道
职场的新人做事要有自己的原则,那么职场新人如何把握原则呢?一起来和小编看看吧。尊重原则:职场新人新到职场遭到“欺生”很常见,如果掌握了处事技巧这就没问题了,小峰在佛山觅得一份新的文案策划职位,新公…...
投资理财产品的网站建设/2021年网络营销考试题及答案
引言 在日常开发工作中,多线程开发可以说是必备技能,好的程序员是一定要对线程这块有深入了解的,我是Java程序员,并且Java语言本身对于线程开发的支持是非常成熟的,所以今天我们就来入个门,学一下Java怎么创…...
网站对公司的重要性/搜索引擎关键词广告
Python提供了一些内建函数用于基本对象类型:cmp(),repr(),str(),type()和等同于repr()的( )操作符 (1)type&am…...