Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:python:字节转换

Python字节转换


字节(序列)类型

#创建10个字节
someData=bytes(10)

整数

someInt=int(1024)
byteData=someInt.to_bytes(4,byteorder='little',signed=True)
gotInt=int.from_bytes(byteData,byteorder='little',signed=True)

浮点数

import struct
 
someFloat=float(3.14)
#默认长度是4个字节
floatData=struct.pack('f',someFloat)
#'f'就像是格式描述字符串
gotFloat=struct.unpack('f',floatData)
# 一次转换多个
nums = [3.14, 2.71, 1.62]
byte_data = struct.pack('3f', *nums)  # 转换为 3 个 32 位浮点数
print(byte_data)
 
# 使用'd'表示 double 一般是8字节
# 使用'>' '<' 表达大小端 比如 '<f'

字符串

someStr='Hello'
#编码
strData=someStr.encode('utf-8')
#解码
gotStr=strData.decode('utf-8')
 
# 为了更方便传递到C 可能使用ascii编码更好

拼接 bytes

# AI
# 方法1
b1 = b"hello"
b2 = b" "
b3 = b"world"
# 拼接
result = b1 + b2 + b3
print(result)  # 输出: b'hello world'
 
# 方法2
byte_list = [b"hello", b" ", b"world"]
# 拼接
result = b"".join(byte_list)
print(result)  # 输出: b'hello world'

bytearray

AI:

  1. bytes 是不可变的(immutable),这意味着一旦创建,它的内容就不能更改。
  2. bytearray 是可变的(mutable),允许你修改其中的内容,比如改变某个字节或者添加新的字节。
  3. 一般我们传递数据,使用bytes就可以了(上述示例代码用的也都是bytes)

转换为bytes

# AI
# 创建一个 bytearray
ba = bytearray(b"example data")
 
# 转换为 bytes
b = bytes(ba)
 
# 转换为 bytes
b = ba.tobytes()
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/python/字节转换.txt · Last modified: 2025/01/06 14:58 by zhonghui