填补的二进制框懒惰的序列
-
06-07-2019 - |
题
我已经和功能,需要一个序列的数字印章,这进入适当数量的位和返回一个懒惰的序列块(最低单位的第一个).它垫高位的最后一个方框中填写的方框的大小和我需要建议的"最佳方法(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" ...
参数:
- 在块的大小的数目显着的位在各个数字输入序列
- 出块的大小的数目显着的位在每个数字在懒惰seq,返回。
- 字节是一个懒惰的序列号码从其中提取比特
这里是一个例子,需要一个序列中的三个字节和打破它达到一个序列的两个二位数字,(然后打印它作为一个binary string)。
user> (map #(java.lang.Integer/toBinaryString %) (block-seq 20 [0xAA 0xAA 0xAA])) ("10101010101010101010" "1010") user>
第二个数字在该序列中的20位人数只有四个明显的位和有一个有效的16个零增加。如果我然后通过了这个序列中的另一个功能,想做一些序列,并发送网络;代码的接收端需要知道不要打印/储存/etc去的16位。
PS:这些可以被链接。(块seq20 15(块-8seq20(读字节从文件)))
解决方案
它仍然不太清楚你想要做什么,但似乎你想知道的最好的方法框seq返回的数量加垫位在最后一块。当然,这是不可能的,前面的如果你想正常的懒,因此必须返回之后或者最后一块。
不使用元数据,你可能仅仅是返回的一个列表像
(1 2 3 :pad 12)
利用元数据,可以加,填补信息的最后一缺点(和无法加元为整数),所以最后一缺点将相当于
(with-meta '(3) {:pad 12})
用于链接到工作,二进制框会必须意识到,填补信息,在这两种情况下,这样为的是能够联合国垫然后再垫的最后一块。
如何传送信息填补在线是另外一个问题,虽然。
不隶属于 StackOverflow