我打电话给一个有趣的API,它返回一个字节数组,但我想要一个文本流。有一种简单的方法从字节数组中获取文本流吗?现在我只是把在一起:如何将字节数组转换为Common Lisp中的字符串?
(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))
,然后包裹结果与输入 - 从字符串,但不能是最好的方式。 (另外,它的效率非常低。)
在这种情况下,我知道它总是ASCII,因此将它解释为ASCII或UTF-8就没问题。我使用支持Unicode的SBCL,但我更喜欢SBCL-Unicode特定版本的便携式(甚至是纯ASCII)解决方案。
真实的,但它还是会做的中间字符串。我希望有一个解决方案可以将现有的字节数组包装在一个流中,而不需要O(n)多个存储空间。我猜我的头衔不太好。 :-) – Ken 2009-03-01 17:02:59