ファイルをバイト配列に読み込んでいますが、バイト配列には削除したい末尾の 0 があります (0 なしで新しいバイト配列を返します)。しかし、バイト配列はリスト的なものではないため、フィルター/削除/マップを使用できません。
バイト配列で再帰を使用する唯一の解決策はありますか?
ありがとう!
バイト配列でシーケンス操作を使用できるはずです。
(byte-array (take-while pos? (.getBytes (slurp "some/binary/file.dat"))))
Clojure のバイト配列はシーケンスであり、フィルター、マップ、およびその他の関数はシーケンスに対して機能します。
この関数を使用して、末尾のゼロを削除できます。
(defn pos-byte-arrayE
[seq]
(take-while pos? seq))
バイト配列でフィルターを使用して、すべてのゼロを削除できます。
(defn pos-byte-arrayF
[seq]
(filter pos? seq))
repl-test.core=> (pos-byte-arrayF [1 2 3 0])
(1 2 3)