我已经和功能,需要一个序列的数字印章,这进入适当数量的位和返回一个懒惰的序列块(最低单位的第一个).它垫高位的最后一个方框中填写的方框的大小和我需要建议的"最佳方法(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})

用于链接到工作,二进制框会必须意识到,填补信息,在这两种情况下,这样为的是能够联合国垫然后再垫的最后一块。

如何传送信息填补在线是另外一个问题,虽然。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top