gpt4 book ai didi

c# - 在 Python 中压缩并使用 decompress C# 解压缩的最简单方法(反之亦然)

转载 作者:行者123 更新时间:2023-11-28 21:27:39 24 4
gpt4 key购买 nike

我有一个程序,其中包含基于 Mono 的 C# 客户端和 Python 服务器,它们通过 TCP/IP 套接字进行通信。这些消息主要使用二进制格式,但每条消息的最大部分通常是嵌入的 UTF-8 字符串(英文)。每条消息通常都很短(不到 100 字节),但有些消息可能更长(最多 64K)。交换了大量数据,我想通过在传输时压缩数据来减少消息大小和带宽使用。

我的初步研究没有发现任何明显兼容 2 个标准库的内容。 Python 有一个 zlib库,但我不能使用 C# 的 DeflateStream或 GZipStream(因为它们需要一个我没有的外部 DLL)并且它似乎不适用于 SharpZipLib 的 ZipOutputStream(发出“错误 -3 - 不正确的 header ”响应)。 (那些不使用 Mono 的人可能更幸运 - 请参阅下面 Duncan 的回答。)

我很想听听有关通过此通信链接启用压缩的简单方法,请记住,任何可能易于用一种语言实现的解决方案都需要在另一种语言中具有等效的解决方案。我会接受专门针对 UTF-8 字符串而不是二进制消息的解决方案,尽管首选是压缩整个字节流。

理想情况下,我希望将外部依赖性保持在最低限度,但我意识到这可能不切实际。

更新:尝试使用 SharpZipLib 并在 Python 解码端遇到重复错误后,我真的可以使用已知有效代码的具体建议,而不仅仅是针对一种语言或另一种语言的压缩库建议。

最佳答案

你写道:

Similarly both standard libraries offer gzip compression but Python expects to use file in this case, which is not practical.

事实并非如此。 Python 的 gzip.GZipFile() 类采用 filenamefileobj。如果您想使用字符串,只需使用 StringIO 对象作为 fileobj:

from gzip import GzipFile
from StringIO import StringIO
sio = StringIO()
with GzipFile(fileobj=sio, mode='wb') as gzip:
gzip.write('uncompressed data')
compressed = sio.getvalue()

关于c# - 在 Python 中压缩并使用 decompress C# 解压缩的最简单方法(反之亦然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com