Как инициализировать массив байтов в Clojure

Какой синтаксис для создания байтового массива в Clojure инициализирован для указанной коллекции значений?

Что-то вроде этого, но это работает...

(байт-массив [0 1 2 3])

Ответ 1

(байт-массив (байт карты [0 1 2 3]))

afaik Clojure не имеет байтовых литералов.

Ответ 2

Другие плакаты дали хорошие ответы, которые хорошо работают.

Это на всякий случай, когда вы делаете это много и хотите, чтобы макрос сделал ваш синтаксис немного более аккуратным:

(defmacro make-byte-array [bytes] 
  `(byte-array [[email protected](map (fn[v] (list `byte v)) bytes)]))  

(aget (make-byte-array [1 2 3]) 2)
=> 3

Ответ 3

(byte-array [(byte 0x00) (byte 0x01) (byte 0x02) (byte 0x03)])

Ответ 4

(byte-array [(byte 0) (byte 1) (byte 2)])

Пояснение:

byte создает byte

byte-array создает byte[]

bytes преобразует его в byte[]