2

ファイルをバイト配列に読み込んでいますが、バイト配列には削除したい末尾の 0 があります (0 なしで新しいバイト配列を返します)。しかし、バイト配列はリスト的なものではないため、フィルター/削除/マップを使用できません。

バイト配列で再帰を使用する唯一の解決策はありますか?

ありがとう!

4

2 に答える 2

4

バイト配列でシーケンス操作を使用できるはずです。

(byte-array (take-while pos? (.getBytes (slurp "some/binary/file.dat"))))
于 2012-05-26T04:48:47.620 に答える
1

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)
于 2012-05-26T15:04:08.997 に答える