我有Clojure函数,它采用一系列数字将其切成适当的位数并返回一个延迟的数据块序列(最低位第一位)。它填充最后一个块的高位填充块大小,我需要关于“最佳方式(tm)”的建议来记录填充量,同时保持它的惰性和功能性?填充二进制块惰性序列
智慧之语非常感谢。
(defn block-seq ([block-size bytes] "reads a byte-seq into a sequence of block-size bits." (block-seq 8 block-size bytes)) ([in-block-size out-block-size bytes] "converts a seq from in-block-size to out-block-size" ...
参数:
- 在块大小是显著比特的输入序列中的每个号码的数目
- 出块大小是在每个显著比特数返回的lazy seq中的数字。
- 字节是数字的懒惰序列从中提取比特
这里是利用了三个字节的序列,并且将其分解为两个20位数字(的序列的示例,并且然后打印其作为一个二进制字符串)。
user> (map #(java.lang.Integer/toBinaryString %) (block-seq 20 [0xAA 0xAA 0xAA])) ("10101010101010101010" "1010") user>
20位数序列中的第二个数字只有四个有效位,并且有一个有效的16个零添加。如果我然后将这个序列传递给另一个想要对序列做些什么并通过网络发送的函数;接收端的代码需要知道不打印/存储/等最后的16位。 PS:这些可以链接在一起。 (block-seq 20 15(block-seq 8 20(read-bytes-from-file)))
很难说没有看到更多的代码,你可以使用元数据来记录填充吗? – 2009-06-23 19:46:12