일련의 숫자를 적절한 비트 수로 잘라내어 청크의 지연 시퀀스 (최하위 비트가 먼저)를 반환하는 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의 숫자.
- 바이트 여기
는 3 바이트의 시퀀스를 취하여 2 내지 20 비트 수 (시퀀스로 그것을 나누기 예는 비트를 추출 할 수있는 숫자의 지연 시퀀스이며, 다음으로 인쇄 이진 문자열).
user> (map #(java.lang.Integer/toBinaryString %) (block-seq 20 [0xAA 0xAA 0xAA])) ("10101010101010101010" "1010") user>
20 비트 숫자의 시퀀스에서 두 번째 숫자는 유효 비트가 4 개 뿐이며 유효한 16 개의 0이 추가됩니다. 그런 다음이 시퀀스를 시퀀스를 사용하여 무언가를하고 네트워크를 통해 전송하려는 다른 함수에 전달하면; 수신 측의 코드는 마지막 16 비트를 인쇄/저장하지 않도록/알아야합니다.
추신 : 이들은 연결될 수 있습니다. (block-seq 20 15 (block-seq 8 20 (read-bytes-from-file)))
더 많은 코드를 보지 않고 무엇을하고 있는지 말할 수는 없지만 메타 데이터를 사용하여 패딩을 녹음 할 수 있습니까? –
패딩 비트 수에 대한 정보를 읽으려면 무엇이 필요하며 읽을 수있는 편리한 방법은 무엇입니까? 의견에 대해 –
주셔서 감사합니다. 수정합니다. –