मैं एक मजेदार एपीआई कॉल कर रहा हूं जो बाइट सरणी देता है, लेकिन मुझे एक टेक्स्ट स्ट्रीम चाहिए। क्या बाइट सरणी से टेक्स्ट स्ट्रीम प्राप्त करने का कोई आसान तरीका है? अभी के लिए मैं सिर्फ एक साथ फेंक दिया:सामान्य लिस्प में स्ट्रिंग से बाइट सरणी को कैसे परिवर्तित करें?
(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 है, इसलिए इसे एएससीआईआई या यूटीएफ -8 के रूप में व्याख्या करना ठीक होगा। मैं यूनिकोड-जागरूक एसबीसीएल का उपयोग कर रहा हूं, लेकिन मैं एक एसबीसीएल-यूनिकोड-विशिष्ट एक के लिए एक पोर्टेबल (यहां तक कि ASCII- केवल) समाधान पसंद करूंगा।
यह सच है, लेकिन यह अभी भी एक बनाने होगी मध्यवर्ती स्ट्रिंग। मैं ऐसे समाधान की उम्मीद कर रहा हूं जो ओ (एन) अधिक स्टोरेज के बिना स्ट्रीम में मौजूदा बाइट सरणी को लपेट सके। मुझे लगता है कि मेरा शीर्षक बहुत अच्छा नहीं था। :-) – Ken