我打電話給一個有趣的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