flexi-streams用法簡介
阿新 • • 發佈:2018-12-10
因為前段時間打算重新基於clack寫一個Web框架的緣故,遇上了需要從FLEXI-STREAMS的流中讀取二進位制資料的問題。試驗一番後知道怎麼處理了,寫一篇簡短的文章來記錄一下。
廢話不多說,直接上程式碼吧,反正看著也很簡單
(let* ((text "Hello, world!") ; 原始文字 (octets (flexi-streams:string-to-octets text)) ; 使用flexi-streams轉換為位元組陣列,因為下一個函式只接受這種型別的引數 (memory-input (flexi-streams:make-in-memory-input-stream octets)) ; 同樣先轉換為記憶體中的流,因為下一個函式只接受這種型別的引數 (flexi-stream (flexi-streams:make-flexi-stream memory-input)) ; 終於可以得到一個真正的flexi-stream了 (buffer (make-array (flexi-streams:octet-length text)))) ; 這裡其實用位元組的長度還是用字元的長度(flexi-streams:char-length)都沒差 (read-sequence buffer flexi-stream) ; 可以像處理CL中的流那樣處理flexi-stream (print (coerce buffer 'string))) ; 把位元組陣列拼成字串再輸出比較好看