丽水专业网站建设价格,wordpress小程序 守望轩,沭阳住房和城乡建设局网站,广东做陶瓷的网站文章目录int 与 bytes转换int 转 bytesbytes 转 intstr 与 bytes互转其他格式转字节格式说明转字节字节转其他字节在存储的时候根据存储的格式不同#xff0c;可能会有大端小端之分#xff0c;如果是数字#xff0c;还有有符号无符号的区分#xff0c;所以在自己处理的时候…
文章目录int 与 bytes转换int 转 bytesbytes 转 intstr 与 bytes互转其他格式转字节格式说明转字节字节转其他字节在存储的时候根据存储的格式不同可能会有大端小端之分如果是数字还有有符号无符号的区分所以在自己处理的时候可能会有一些麻烦。所以记录一下转换的方法希望有同样遇到的人可以对其提供一些帮助。
常见的数据类型
数据类型字节长度取值范围int81-128 ~ 127uint810 ~ 255int162-32768 ~ 32767uint1620 ~ 65535int324-2^31 ~ 2^31 -1uint3240 ~ 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, signedTrue)# 结果b\x80\x00bytes 转 int
例子
# bytes 转 int
int.from_bytes(字节, 大端/小端存储, 关键字参数有符号还是无符号)
- 大端big
- 小端little# 例如将刚刚存入的结果转回来
int.from_bytes(b\x80\x00, little, signedTrue)
# 如果你使用大端模式解析出来你会发现一个完全不一样的数字
# 如果是只有一个字节的数据大端小端也就无所谓了str 与 bytes互转
这个还是比较简单的。 例如
# str 转 bytes
# 这个转化只需要对str进行编码就好了默认使用 utf-8编码
章三.encode()# bytes 转 str
# 相应的只需要对bytes数据进行解码默认使用 utf-8 编码
b.decode()其他格式转字节
其他格式转字节的话可以借助struct 库来完成这里简单介绍一下它的使用方式和一些参数。
在使用struct 库进行转化的时候需要一个格式字符串说明数据是什么类型的什么存储方式之类的信息所以先介绍一下他的格式说明。
格式说明
格式设置字符如下 第一个字符存储方式
符号说明本机存储顺序、存储大小、存储队列 默认选项本机存储顺序标准存储大小、存储队列小端序、标准存储大小、存储队列大端序、标准存储大小、存储队列!与 相同
其余字符表示参数的类型必须完全匹配这些可以在十进制重复计数之前
符号说明x填充字节不是数据c字符bbyte类型1字节整型B无符号byte?_Bool 需要 C99如果不可用则使用 char 代替hshort类型 2字节整型H无符号shortiint类型 4字节整型I大写i无符号intl小写Llong类型 8字节整型L无符号longffloat类型 32为浮点类型ddouble类型ehalf-float 16位浮点类型sstring类型也可以理解成字节数组。需要在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,)希望可以帮到你 曾经沧海难为水 除却巫山不是云。 取次花丛懒回顾 半缘修道半缘君。