CLでSRFI-74 — #:g1

Posted 2012-01-23 16:46:00 GMT

CLでSRFI、今回は、SRFI-74の「Octet-Addressed Binary Blocks」です。 このSRFI 74では、Octet-Addressed Blocks of Binary Dataは手短にblobと呼んでいて、エンディアンを扱うのに便利な仕組みも提供されていたりします。

動作

(defparameter blob1 (u8-list->blob '(#x12 #x34 #xab #xcd)))

(format nil "~{~X~}" (blob->uint-list 4 (endianness :little) blob1)) ;=> "CDAB3412" (format nil "~{~X~}" (blob->uint-list 4 (endianness :big) blob1)) ;=> "1234ABCD"

移植について

SRFI-74で(endianness)で指定するエンディアンを指定するためのシンボルは、キーワードではありませんが、CLだと不便なのでキーワードにしました。
他、SBCL等では、*features*で処理系が動くマシンのエンディアンを知ることができる場合があるので、:nativeでは、それの情報を使ってみることにしました。

comments powered by Disqus