You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中将ZIP流序列化为字符串后,能否在Python中反序列化还原?

可行方案:C#流转字符串后在Python还原ZIP文件

完全可行,核心思路是用Base64编码将二进制ZIP流转换为安全的字符串格式,这种方式在C#和Python中都有原生支持,不会丢失数据。

C#端:将ZIP流转换为Base64字符串

ZIP属于二进制数据,直接转普通字符串会导致数据损坏,必须用Base64编码把二进制字节转成ASCII字符串,才能安全存储。

示例代码:

using (var memoryStream = new MemoryStream())
{
    // 将ZIP写入内存流
    await WriteZipToStream(memoryStream);
    // 重置流指针到起始位置,确保读取完整数据
    memoryStream.Position = 0;
    // 将流转为字节数组
    byte[] zipBytes = memoryStream.ToArray();
    // 字节数组转Base64字符串
    string zipBase64 = Convert.ToBase64String(zipBytes);
    // 保存到安全存储
    await SaveStringInSecureWay(zipBase64);
}

Python端:将Base64字符串还原为ZIP文件

从安全存储获取Base64字符串后,解码回二进制数据,即可还原为ZIP文件或直接在内存中处理。

示例代码:

import base64
import zipfile
from io import BytesIO

# 从安全存储获取Base64字符串(替换为实际获取逻辑)
zip_base64 = "获取到的Base64字符串"

# 解码Base64为二进制字节
zip_bytes = base64.b64decode(zip_base64)

# 方式1:直接写入本地ZIP文件
with open("restored.zip", "wb") as f:
    f.write(zip_bytes)

# 方式2:在内存中读取ZIP内容(无需写入磁盘)
with zipfile.ZipFile(BytesIO(zip_bytes), 'r') as zip_ref:
    # 打印ZIP内的文件列表
    print(zip_ref.namelist())
    # 提取单个文件到当前目录
    zip_ref.extract("目标文件名.txt")
    # 提取所有文件到指定文件夹
    zip_ref.extractall("extracted_files")

关键说明

Base64是跨语言二进制转字符串的标准方案,C#的Convert.ToBase64String和Python的base64.b64decode完美兼容,不会出现数据丢失或乱码问题,完全满足你的场景需求。

内容的提问来源于stack exchange,提问作者pseudodev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:04:57