如何在Clojure中解析二进制文件
在clojure中解析二进制数据最干净的方法是什么? 我需要能够同样干净地读/写文件或套接字 比如: (read-data source-of-data) => { :index 42 , :block-size 4 , data-size: 31415, :data (1 2 3 4 ...)} (读取数据的数据源) =>{:索引42,:块大小4,数据大小:31415,:数据(1234…) 相反,用于将数据放回。如何在Clojure中解析二进制文件,clojure,binaryfiles,binary-data,Clojure,Binaryfiles,Binary Data,在clojure中解析二进制数据最干净的方法是什么? 我需要能够同样干净地读/写文件或套接字 比如: (read-data source-of-data) => { :index 42 , :block-size 4 , data-size: 31415, :data (1 2 3 4 ...)} (读取数据的数据源) =>{:索引42,:块大小4,数据大小:31415,:数据(1234…) 相反,用于将数据放回。 以某种方式定义一次结构,让读写函数使用相同的定义,这将是非常棒的 既然Cl
以某种方式定义一次结构,让读写函数使用相同的定义,这将是非常棒的 既然Clojure可以使用本机Java函数,为什么不使用它们呢?沿着这些行快速搜索会得到:可以很容易地在字节级别定义二进制格式,用于读取和写入
(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"})
位图
函数允许位级格式,但定义的位数必须能被8整除,以便字节仍然对齐
还有。虽然这是一个好的开始,但我需要读和写这些fomats。我还需要位级精度。