如何解析Clojure中的二进制文件
-
09-09-2019 - |
题
什么是Clojure中解析二进制数据的干净的方式? 我需要能够读/同样干净地写入一个文件或一个插座。
是这样的:
(read-data source-of-data) => { :index 42 , :block-size 4 , data-size: 31415, :data (1 2 3 4 ...)}
和用于使数据返回相反。 这将是真正伟大的以某种方式一旦确定结构,并具有读写功能使用相同的定义。
解决方案
光泽可以很容易在两种读出字节级来定义二进制格式和写入。
(defcodec example-codec
[:id :uint32
:msg-type (enum :byte {:a \A, :b \B})
:status (string :ascii :length 11)])
(def buffer (byte-array 16))
(.read (input-stream "filename.bin") buffer)
(decode example-codec buffer)
(encode example-codec {:id 42, :msg-type :a, :status "A-OKAY"})
在bit-map
功能允许比特电平格式,但限定必须是8整除的比特数量,因此字节还是排队。
有也字节规格。
其他提示
由于Clojure中可以使用本机的Java功能,为什么不使用那些?沿着这些线路的快速谷歌搜索提供了: HTTP:/ /gnuvince.wordpress.com/2009/01/29/reading-binary-data-in-clojure/
不隶属于 StackOverflow