在 Perl 中,
pack
和 unpack
是根据用户定义的模板转换二进制数据的两个函数。
以下是这些功能的教程: https://perldoc.perl.org/perlpacktut#The-Basic-Principle
这两个函数执行相同操作的 Clojure 惯用方式是什么?
人们在 Clojure 中发明自己的序列化格式并不常见。相反,最常见的解决方案是将现有数据结构序列化为文本/二进制并返回。
Clojure 的内置版本是 EDN 格式,它是 clojure 本身的子集。
(pr-str {:foo "bar"})
给你"{:foo \"bar\"}"
。 clojure.edn/read-string
该字符串会返回原始地图。
如果您喜欢更紧凑、性能更高的变体,那么 transit 是一个不错的选择。与 EDN 的原理相同,因为它具有对所有 CLJ 数据结构的完全内置支持,并且可以针对自定义类型进行扩展。
如果您确实想使用自己的自定义二进制格式,则可以分别使用 java.io.DataOutputStream 和 DataInputStream。当然,还有很多库可以进一步简化/抽象。