Я вызываю смешной API, который возвращает массив байтов, но мне нужен текстовый поток. Есть ли простой способ получить текстовый поток из массива байтов? На данный момент я просто бросил вместе:
(defun bytearray-to-string (bytes)
(let ((str (make-string (length bytes))))
(loop for byte across bytes
for i from 0
do (setf (aref str i) (code-char byte)))
str))
а затем оберните результат с помощью input-from-string, но это не лучший способ. (Кроме того, это ужасно неэффективно.)
В этом случае я всегда знаю ASCII, поэтому интерпретация его как ASCII или UTF-8 будет в порядке. Я использую SBCL с поддержкой Unicode, но я предпочел бы портативное (даже ASCII-only) решение для SBCL-Unicode-специфического.