Как инициализировать массив байтов в Clojure - PullRequest
11 голосов
/ 11 декабря 2010

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

Как-то так, но это работает ...

(байтовый массив [0 12 3])

Ответы [ 4 ]

13 голосов
/ 11 декабря 2010

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

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

4 голосов
/ 11 декабря 2010

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

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

(defmacro make-byte-array [bytes] 
  `(byte-array [~@(map (fn[v] (list `byte v)) bytes)]))  

(aget (make-byte-array [1 2 3]) 2)
=> 3
1 голос
/ 11 декабря 2010
(byte-array [(byte 0) (byte 1) (byte 2)])

Объяснение:

byte создает byte

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

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

1 голос
/ 11 декабря 2010
(byte-array [(byte 0x00) (byte 0x01) (byte 0x02) (byte 0x03)])
...