Python中 str、bytes、bytearray的相互转化

在一次aes解密中,我完全弄混了str、bytes、bytearray,结果导致解密的结果不正确。在这里记录一下三者的区别和相互转化的方法。

首先str是采用Unicode编码方式的序列,主要用于显示。

而bytes是字节序列,主要用于网络和文件传输。

bytearray和bytes是一样的,只是它是可变的,它们的关系和str与list类似。

在aes解密或者网络数据中,数据应该是bytes或bytearray。

  • str和bytes的相互转化就是编码和解码。

str——》bytes (encode)

str="aabbcc"
bytes=str.encode('utf-8')

print(str)
aabbcc
print(bytes)
b'aabbcc'

更简单的方式是使用b声明是bytes

bytes=b'aabbcc'

 bytes——》str (decode)

bytes=b"aabbcc"
str=bytes.decode('utf-8')
print(bytes)
b'aabbcc'
print(str)
aabbcc
  •  bytes和str转化为bytearray都依赖于bytearray函数

bytes——》bytearray

bytes=b"aabbcc"
byarray=bytearray(bytes)

print(byarray)
bytearray(b'aabbcc')

str——》bytearray (encoding)

str="aabbcc"
byarray=bytearray(str)

print(byarray)
bytearray(b'aabbcc')

常见的网络传输时,有hex字符串转为bytearray的需求可以使用bytearray.fromhex(),这时是不需要编码的。

hexstr="098811"
byarray=bytearray.fromhex(hexstr)
print(byarray)
bytearray(b'\t\x88\x11')

注意到长度减半!!!!!

  • bytearray转为str和bytes 依赖于解码和bytes函数
byarray=bytearray("aabbcc",encoding='utf-8')
str=byarray.decode('utf-8')
bytes=bytes(byarray)
print (byarray)
bytearray(b'aabbcc')
print(str)
aabbcc
print(bytes)
b'aabbcc'

 

### DeepSeek 的功能与用途介绍 #### 支持多样化应用场景 DeepSeek 提供了广泛的应用场景支持,不仅限于开发者的API需求,还在Chat和Code两个特定领域展现了卓越的能力[^1]。这使得该平台能够适应多种工作流环境下的智能化交互。 #### 多令牌预测技术实现 通过采用先进的多令牌预测(Multi-Token Prediction, MTP)机制,如图5所示的技术架构所展示的那样,DeepSeek能够在单次请求中处理多个输入单元的信息传递过程[^2]。这种设计显著提高了模型对于复杂语境的理解能力和响应效率。 #### 用户友好型特性集合 为了提升用户体验并满足不同层次的需求,DeepSeek集成了若干实用工具和服务。除了基本的文字交流外,还包括但不限于: - **语言转换服务**:允许跨语言沟通无障碍; - **创作辅助模块**:帮助创作者激发灵感、撰写文案; - **程序编写助手**:提供代码建议和技术文档解析; - **难题解答器**:针对学术研究或日常学习中的疑问给予指导; - **资料分析专家**:协助科研人员理解专业文献的核心要点; - **行程策划师**:为旅行爱好者制定个性化旅游方案; 特别值得一提的是,“拍照识别文字”的加入进一步拓宽了产品的适用范围,让用户可以轻松获取图像内的文本信息[^3]。 ```python # 示例:调用DeepSeek API进行图片转文字操作 import requests def ocr_image(image_path): url = "https://api.deepseek.com/vision/ocr" files = {'file': open(image_path, 'rb')} response = requests.post(url, files=files) result = response.json() return result['text'] print(ocr_image('example.jpg')) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值