1. 程式人生 > >flexi-streams用法簡介

flexi-streams用法簡介

因為前段時間打算重新基於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)))      ; 把位元組陣列拼成字串再輸出比較好看