2012-05-26 5 views
2

바이트 배열에 파일을 읽는 중이지만 바이트 배열에는 제거하려는 후행 0이 있습니다 (0없이 새 바이트 배열 반환). 하지만 바이트 배열 그래서 그것은 필터/제거 /지도를 사용할 수 없습니다 listish 일이 아니다.Clojure - 바이트 배열에서 0을 제거 하시겠습니까?

바이트 배열에 대한 재귀를 사용하는 유일한 솔루션입니까?

감사합니다.

+0

여기서 동의 버튼은 무엇입니까? –

+1

나는 그것을 발견했다 ... 나는 진드기가 장식용이 아니라는 것을 깨닫지 못했다. 감사합니다 –

+1

일반적인 메모 .. Clojure에는'seq's가 있고'seqable' 것들이 있습니다. Java 배열은'seqable'이므로'(seq a)'는'a'가 붙은'seq'를 반환합니다. –

답변

4

당신은 바이트 배열에 시퀀스 작업을 사용할 수 있어야합니다 :

(byte-array (take-while pos? (.getBytes (slurp "some/binary/file.dat")))) 
1

Clojure의에서 바이트의 배열 순서, 및 필터,지도, 그리고 다른 기능은 시퀀스에서 작동합니다.

당신은 후행 제로를 제거하려면이 기능을 사용할 수 있습니다 :

(defn pos-byte-arrayE 
    [seq] 
    (take-while pos? seq)) 

당신은 모든 0을 제거하려면 바이트 배열에 필터를 사용할 수 있습니다.

(defn pos-byte-arrayF 
    [seq] 
    (filter pos? seq)) 

repl-test.core=> (pos-byte-arrayF [1 2 3 0]) 
(1 2 3) 
관련 문제