Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-03-12

KMRCLを眺める STRING-TO-USB8-ARRAY (112)

| 13:36 | KMRCLを眺める STRING-TO-USB8-ARRAY (112) - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める STRING-TO-USB8-ARRAY (112) - わだばLisperになる

今回はKMRCLのstrings.lispから、STRING-TO-USB8-ARRAYです。

前回のUSB8-ARRAY-TO-STRINGの逆のことをする関数で、文字列を(UNSIGNED-BYTE 8)のARRAYに変換する関数です。

動作は、

(KL:STRING-TO-USB8-ARRAY "foo")
⇒ #(102 111 111)

というところ

定義は、

(defun string-to-usb8-array (str)
  (declare (simple-string str))
  (let* ((len (length str))
         (vec (make-usb8-array len)))
    (declare (fixnum len)
             (type (simple-array (unsigned-byte 8) (*)) vec)
             (optimize (speed 3)))
    (do ((i 0 (1+ i)))
        ((= i len) vec)
      (declare (fixnum i))
      (setf (aref vec i) (char-code (schar str i))))))

となっています。