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

2024-02-24

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

我最初的研究并没有发现任何在这两个标准库之间明显兼容的东西。 Python 有一个zlib http://docs.python.org/library/zlib.html库,但我不能使用 C# 的放气流 http://msdn.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx或 GZipStream (因为它们需要一个我没有的外部 DLL),并且它似乎无法与 SharpZipLib 的 ZipOutputStream 一起使用(给出“错误 -3 - 错误的标头”响应)。 (那些不使用 Mono 的人可能会更幸运 - 请参阅下面邓肯的回答。)

我有兴趣了解在该通信链路上启用压缩的简单方法,请记住,任何可以轻松用一种语言实现的解决方案都需要在另一种语言中具有等效的解决方案。我接受专门针对 UTF-8 字符串而不是二进制消息的解决方案,尽管首选是压缩整个字节流。

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

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


你写了:

同样,两个标准库都提供 gzip 压缩,但 Python 期望在这种情况下使用文件,这是不切实际的。

这实际上不是真的。蟒蛇的gzip.GZipFile()类需要一个filename or a fileobj。如果你想使用字符串,只需使用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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中压缩并使用解压缩 C# 解压缩的最简单方法(反之亦然) 的相关文章

  • 如何在使用 Flask for Python 3 的同时使用 Bootstrap 4?

    我检查过 发现默认安装时 Flask Bootstrap 原生使用 Bootstrap 3 3 7 但实际上我想通过使用 Flask Bootstrap 包在我的项目中使用 Bootstrap 4 任何有关如何更新它或类似内容的帮助将不胜感
  • Parallel.ForEach - 优雅取消

    关于等待任务完成和线程同步的主题 我目前有一个迭代 我已将其包含在 Parallel ForEach 中 在下面的示例中 我在评论中提出了一些关于如何最好地处理循环的优雅终止的问题 NET 4 0 private void myFuncti
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • Pandas 根据条件替换数据框值

    我有一个主数据框 df Colour Item Price Blue Car 40 Red Car 30 Green Truck 50 Green Bike 30 然后我有一个价格修正数据框 df pc Colour Item Price
  • 在 Keras 中使用有状态 LSTM 训练多变量多级数回归问题

    我有时间序列P过程 每个过程的长度各不相同 但都有 5 个变量 维度 我试图预测测试过程的估计寿命 我正在用有状态的方法来解决这个问题LSTM在喀拉斯 但我不确定我的训练过程是否正确 我将每个序列分成长度的批次30 所以每个序列都是这样的形
  • 当 C 中没有足够的内存用于静态分配时会发生什么?

    当您动态分配内存时 例如malloc 1024 sizeof char 结果指针设置为NULL如果没有足够的可用内存来满足请求 当没有足够的内存来满足静态分配时会发生什么 例如char c 1024 char c 1024 不一定是静态分配
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • PySpark DataFrame 上分组数据的 Pandas 式转换

    如果我们有一个由一列类别和一列值组成的 Pandas 数据框 我们可以通过执行以下操作来删除每个类别中的平均值 df DemeanedValues df groupby Category Values transform lambda g
  • Python:如何“杀死”类实例/对象?

    我希望 Roach 类在达到一定量的 饥饿 时 死亡 但我不知道如何删除该实例 我的术语可能有误 但我的意思是 窗户上有大量 蟑螂 我希望特定的蟑螂完全消失 我会向您展示代码 但它很长 我将蟑螂类添加到策划者类蟑螂种群列表中 一般来说 每个
  • 根据标签位置计算 Pandas DataFrame 的索引

    我正在尝试计算标签的索引Pandas https pandas pydata org DataFrame在每一列中 基本上我有以下内容DataFrame d col1 label1 label2 label3 col2 label2 lab
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 如何明智地解释这个编译器警告?

    当我执行这段代码时question https stackoverflow com a 51056490 2411320 我收到这个警告 warning format d expects argument of type int but a
  • 将整数转换为特定格式的十六进制字符串

    我是 python 新手 有以下问题 我需要将整数转换为 6 个字节的十六进制字符串 例如 281473900746245 gt xFF xFF xBF xDE x16 x05 十六进制字符串的格式很重要 int 值的长度是可变的 格式 0
  • 来自资源中 ImageSource 的 System.Drawing.Image

    我的问题与这个非常相似 wpf图像资源以及运行时在wpf控件中更改图像 https stackoverflow com questions 940592 wpf image resources and changing image in w
  • 如何从 Anaconda 更新 Pandas 以及最后是否可以使用 eclipse

    我已经使用以下文档通过 Anaconda 安装了 Python http www kevinsheppard com images 0 09 Python introduction pdf http www kevinsheppard co
  • 在标准 C 中将 int 转换为 string

    我是 C 新手 我正在寻找一个可以调用函数进行转换的示例int串起来 我发现itoa但这不是标准 C 的一部分 我还发现sprintf str d aInt 但问题是我不知道所需的 str 的大小 因此 我如何传递输出字符串的正确大小 有多
  • WPF DataGrid 选定项

    我有一个 DataGrid 用户可以通过在最后一行输入数据来添加项目 我还有一个按钮可以删除当前选定的项目 但是 当选择最后一行 空 用于添加新项目 时 最后选定的项目将保留在 SelectedItem 中 因此 如果我打开窗口 选择最后一
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty
  • File.Move 的原子性

    我想将目录中的文件重命名为原子事务 该文件不会更改目录 该路径作为 NTFS 文件系统的 UNC 路径提供 可能位于服务器 03 或 08 上 File Move 对于这些目的来说是原子的吗 例如 它要么成功完成 要么失败 以使原始文件仍然

随机推荐

  • 查找字符出现 N 次的行

    我有一个 txt 文件 我试图将其作为平面文件导入 SQL2008 如下所示 123456 some text 543210 some more text 111223 other text etc 该文件有超过 300 000 行 文本很
  • GAE Python 开发服务器升级到 2.7 后间歇性崩溃

    我最近将我的 GAE Python 应用程序升级到了 Python 2 7 从那时起 我定期在开发服务器上收到以下错误 并且开发服务器提供空白页面 Traceback most recent call last File Applicati
  • 用模式替换 R 中的字符串并替换两个向量

    假设我有两个向量 如下所示 a lt c this is test b lt c that was boy 我还有一个字符串变量 如下所示 string lt this is a story about a test 我想替换字符串中的值
  • 字形和文本之间的间距?

    我正在尝试添加字形图标作为电子邮件地址链接的一部分 图标显示 但图标和电子邮件地址文本之间没有间距 我希望超链接包含图标和文本 包括空格 实现这一目标的最佳方法是什么 a href title Some Email span class g
  • terraform 和 aurora postgresql 的存储类型错误

    我目前正在借助 Terraform 在 AWS 中部署 Aurora postgres 实例 这里是我的报关表 resource aws db instance postgreDatabase name validName storage
  • 以编程方式将类序列化为 xsd

    有没有办法以编程方式从 C NET 类创建 XSD 我想将对象序列化为带有类型信息的 xsd 或 xml 是的 看着XsdDataContractExporter MSDN 有一个完整的例子在这里 http msdn microsoft c
  • SocketOutputStream的线程安全

    我知道 java 套接字的线程安全性已经在 stackoverflow 上的几个线程中进行了讨论 但我一直无法找到这个问题的明确答案 实际上 让多个线程同时写入同一个线程是否安全SocketOutputStream 或者是否存在从一个线程发
  • NavigationLink 内的 SwiftUI 按钮

    我有一个列表项的视图 它显示有关嵌入到 navigationLink 中的任务的一些基本信息 我想使用 navigationLink 中的按钮进行切换task isComplete没有进行任何导航 到目前为止 这是我的代码 var body
  • django-admin.py:找不到命令

    我在 usr local bin 中有 django admin py 并且我已经尝试了网络上提供的所有帮助来创建符号链接 但它仍然显示 django admin py command not find 我正在尝试在 django 中启动我
  • 如何获取从Powershell启动的Explorer的进程ID

    我从Powershell启动 Explorer exe 想要获取资源管理器窗口的进程ID 这样我就不会在其他资源管理器窗口上误操作 代码 启动进程 Explorer exe PassThru 结果 我可以看到进程ID 但它与UISpy或任务
  • 在 .NET 4.5.2 控制台应用程序中使用 .NET Core 库

    我有两个项目 一个项目基于 NET Core 构建 另一个项目基于普通 NET Framework 4 5 2 构建 我想知道如何在 NET 控制台应用程序中使用 NET Core cass 库 这是我的project json versi
  • 在 Chrome 上使用 Jquery 检测 Shift + 单击

    我正在尝试使用 javascript 检测 Shift 点击 但由于某种原因它只适用于 IE click function e if e shiftKey Rain 这是在 IE 中适用的代码 我如何在 Chrome 上检测到它 我不认为有
  • 如何在初始化后设置jqueryui datepicker minDate?

    我有两个日期选择器 jquery ui 我想将第二个输入 minDate 属性 限制为第一个输入中选择的值 我该怎么做 我写了下面的代码 没有成功 picker1 button click function var minDate pick
  • Spark Apache 中的 Worker 无法连接到 master

    我正在使用独立集群管理器部署 Spark Apache 应用程序 我的架构使用 2 台 Windows 机器 一组作为主机 另一组作为从机 工作程序 Master on which I run bin gt spark class org
  • Java 中 DirectX 程序的全屏捕获(Javacv?)

    对于Windows 我知道可以捕获在 C 语言下运行的 DirectX 程序的屏幕 但是您知道 Java 的一些示例代码吗 我实际上面临着同样的问题使用java在全屏应用程序中截取屏幕截图 https stackoverflow com q
  • 突出显示工作表中的第二个实例重复项

    尝试在谷歌表格上标记重复项 但我看到当我使用时 第一个实例被突出显示 COUNTIF A1 A100 A1 gt 1 我尝试同时使用 IF 和 COUNTIF 以便突出显示第二个实例 IF COUNTIF A1 A97 A1 gt 1 Du
  • nginx keepalive 和 dns 解析器

    我在 AWS 中有一个 nginx 实例 它具有上游应用程序层 对nginx有两个要求 活着 使用解析器动态解析上游 我能够使它们中的任何一个工作 这是使 keepalive 工作的配置 upstream backend server ap
  • localStorage 无法在 google chrome 上运行

    我正在使用浏览器localStorage存储一个值 但是在使用谷歌浏览器时 当我们使用以下命令刷新页面时window location reload localStorage value被冲了 例如 localStorage value1
  • MongoDB 副本集成员状态为“OTHER”

    三个成员 主要和次要 第三个成员是 其他 我找不到有关该状态的任何信息 不知道该怎么做 我已经重新启动了实例 但它总是出现相同的情况 找不到有关该状态的文档 我是复制集的新手 任何帮助将不胜感激 配置设置不正确 您可以使用以下命令来初始化
  • 在 Python 中压缩并使用解压缩 C# 解压缩的最简单方法(反之亦然)

    我有一个带有基于 Mono 的 C 客户端和 Python 服务器的程序 它们通过 TCP IP 套接字进行通信 这些消息主要使用二进制格式 但每条消息的最大部分通常是嵌入的 UTF 8 字符串 英文 每条消息通常都很短 小于 100 字节