Python中整数与浮点数分别转换为字节
整数->字节(int to bytes)
使用to_bytes函数。
*int.to_bytes(length, byteorder, , signed=False)
- length是转换后的字节数
自己规定大小,但如果取小了,就会报错
OverflowError: int too big to convert
- byteorder确定用于表示整数的字节顺序
如果 byteorder 是 “big” ,则最高有效字节位于字节数组的开头。如果 byteorder 是 “little” ,则最高有效字节位于字节数组的末尾。
eg:
b = 22
b_1 = b.to_bytes(4,"big")
b_2 = b.to_bytes(4,"little")
print('b_1=',b_1)
print('b_2=',b_2)
结果是
b_1= b'\x00\x00\x00\x16'
b_2= b'\x16\x00\x00\x00'
代码示例:
a = 23
a_t = a.to_bytes(4,"little")
print(a_t)
浮点数->字节(float to bytes)
使用struct库里的pack函数。
struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。
其函数原型为:struct.pack(fmt, v1, v2, …),参数fmt是格式字符串,v1, v2, …表示要转换的python值。
h表示short,l表示long; 'hhl’表示后面有三个参数,依次是short,short,long类型。
c表示 char,bytes of length 1(长度的byte数组),i表示integer 整数;'ci’表示后面有两个个参数,依次是char,integer 类型
如下图:
参考链接:https://blog.csdn.net/u012842630/article/details/85726870
代码示例:
a = 1.34
a_t = struct.pack('<f',a)
print(a_t)
结果:
b'\x1f\x85\xab?'