在Python中序列化二进制数据

2023-12-14

我有一些二进制数据,在 Python 中以字节字符串数组的形式存在。

是否有一种可移植的方法来序列化其他语言可以读取的数据?

JSON 失败是因为我刚刚发现它没有真正的方法来存储二进制数据;它的字符串应该是 Unicode。

我不想使用pickle因为我不希望存在安全风险,这限制了它在其他 Python 程序中的使用。

有什么建议吗?我真的很想使用一个内置库(或者至少是标准 Anaconda 发行版的一部分)。


如果您只需要字符串中的二进制数据并且可以轻松恢复各个字符串之间的边界,则可以将它们作为原始字符串直接写入文件。

如果您无法轻松恢复字符串边界,JSON 似乎是一个不错的选择:

a = [b"abc\xf3\x9c\xc6", b"xyz"]
serialised = json.dumps([s.decode("latin1") for s in a])
print [s.encode("latin1") for s in json.loads(serialised)]

将打印

['abc\xf3\x9c\xc6', 'xyz']

这里的技巧是任意二进制字符串都是有效的latin1,因此它们始终可以解码为 Unicode 并再次编码回原始字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中序列化二进制数据 的相关文章

随机推荐

  • Lambda表达式编译方法

    我有几行代码 public void CreateMethod
  • 随机 MapView 强制关闭:NullPointerException com.google.googlenav.map.Tile.getTile

    我真的需要一些帮助 我有一份关于此堆栈跟踪强制关闭的报告 但我找不到任何有关如何防止的信息 也无法复制此类错误 我希望有人能够了解为什么会发生这种情况 com google googlenav map Tile getTile Unknow
  • include、include_once、require 还是 require_once?

    我有 PHP 文件 其中定义了服务器访问变量以及mysql connect and mysql select db 因为这个函数在后端的几乎每个页面中都经常使用 而我正在使用include 这现在对我来说非常有效 你会建议哪种方法或功能 我
  • 不可见元素的延迟加载

    我有一个案例 我有一个gridview listbox 任何类型的项目控件和绑定到控件的项目数量都很大 很容易在 5000 标记左右 其中每个项目都需要具有从各种 Web 服务加载的各种属性 显然 使用 Web 服务来一次性处理这么多元素是
  • 禁用 CURLOPT_SSL_VERIFYPEER (libcurl/openssl) 的安全后果

    我知道从这个线程禁用 CURLOPT SSL VERIFYHOST 时可能发生哪些攻击 我想知道禁用 VERIFYPEER 而不是 VERIFYHOST 时可能发生哪些攻击 使用信用卡付款的风险是否可以接受 我问的原因是因为我的code仅适
  • Pygame 蛇食物生成器

    我目前正在创建一个贪吃蛇游戏 我想创建一个食物生成器 根据我的游戏计时器每 10 秒生成一个苹果 计时器从 60 倒数到 0 游戏结束时 我希望每 10 秒生成一个新苹果 保留旧苹果 即使它还没有被吃掉 我不知道如何解决这个问题 需要一些帮
  • Windows Visual Studio 2008 中的 Unix Makefile

    我已经进行了不错的搜索 但似乎找不到一种方法让 Visual Studio 2008 使用 unix Makefile 甚至无法从 Makefile 创建一些与 MSVC 兼容的等效文件 有人有想法或类似的问题吗 注意 我已经知道使用 Ma
  • 在 macOS Big Sur 上将 Python 3.7 升级到 3.9

    我正在尝试在 macOS Big Sur 上将 Python 3 7 升级到 3 9 我还试图避免丢失在 Python 3 7 上安装的包并在 Python 3 9 上再次重新安装它们 我尝试使用 brew install python3
  • 是否可以仅使用 C# 以编程方式生成 X509 证书?

    我们正在尝试使用 C 和以下代码以编程方式生成 X509 证书 包括私钥 充气城堡图书馆 我们尝试使用一些代码这个样本由 Felix Kollmann 制作但证书的私钥部分返回 null 代码及单元测试如下 using System usi
  • 在 R 中拟合 Log Pearson III 时出现问题

    我想对我拥有的一些数据点执行对数 Pearson III 拟合 然而 每次我尝试这样做时 我都会收到错误消息 我真的不知道该怎么办 也许我应该补充一点 我从几天前才开始使用 R 所以 我不是这方面的专家 重要的代码部分 没有导入内容的部分等
  • 合并两个字典同时共享密钥

    我正在尝试构建一个小程序 给定一个包含姓名和地址的字典和另一个包含姓名和电话号码的字典 输出应该将它们合并 并且不会相互覆盖 最终输出字典应包含姓名 地址 如果可用 和电话 如果可用 这是一个例子 addr George via Wagne
  • 如何复制当前活动的浏览器 URL?

    我正在尝试获取活动浏览器窗口的当前活动浏览器 URL 有任何指针或代码示例吗 Code NSAppleScript script NSAppleScript alloc initWithSource tell application Saf
  • 调试无法检查变量

    while debugging in eclipse the problem is String hashCode line 1489 local variables unavailable thus not able to inspect
  • Android 网络服务 GPS 导航

    如何在应用程序导航中显示以查找方向和搜索任何地方 当我们在浏览器中打开谷歌地图时会发生这种情况 但我希望在应用程序中也有同样的情况 None
  • 获取已安装 COM 对象的 GUID

    我有一个 32 位 COM 对象 我想将其与 64 位 PHP 一起使用 我正在尝试按照这里的教程进行操作 http www gfi com blog 32bit object 64bit environment 但我被困在 找到你的 CO
  • ASP.NET Excel导出编码问题

    我正在 ASP NET 网站上进行一些 Excel 导出 除了编码之外 一切正常 当我在 Excel 中打开它时 它看起来像这样 Eingabe Kosten je Ger t Ger t 特殊情况 Betriebsmittel Heiz
  • Bootstrap:更改移动设备上全角列的顺序

    我有这样的架构 col 1 col 2 它们的宽度都是12块 和我的html div class col xs 12 col md 5 1 div div class col xs 12 col md 7 2 div 是否可以在 xs mo
  • 从 VTCompressionOutputCallback 中引用“self”[重复]

    这个问题在这里已经有答案了 我目前正在尝试使用 VideoToolbox 对来自AVCaptureVideoDataOutput 但我在引用时遇到问题self从内部VTCompressionOutputCallback 我的代码如下 var
  • 线程和 GUI 应用程序之间的 Python 新型信号和插槽

    我是 OOP 和 python 的新手 我正在尝试使用新样式的信号和插槽从 Qthread 向 Qt GUI 主窗口发出信号 这就是线程 在单击 GUI 中的 运行 按钮后 3 秒后 我将在 GUI 中发出用于更新消息对话框的信号 我不确定
  • 在Python中序列化二进制数据

    我有一些二进制数据 在 Python 中以字节字符串数组的形式存在 是否有一种可移植的方法来序列化其他语言可以读取的数据 JSON 失败是因为我刚刚发现它没有真正的方法来存储二进制数据 它的字符串应该是 Unicode 我不想使用pickl