2015-10-13 64 views
1

如果我這樣理解正確,那麼當有許多不同的體系結構對字節大小有不同意見時,通用的lisp就被標準化了。爲此,通用lisp允許我們定義一個字節的大小。當使用流的讀取字節我讀什麼樣的字節

例如,我可以這樣創造的8位字節數組:

(make-array 10 :element-type '(unsigned-byte 8))

這個偉大的工程,到目前爲止,這方面的知識已經夠了什麼我一直在做。

今天雖然我一直在使用二進制流和read-byte函數混淆了我。

CLHSread-byte reads and returns one byte from stream.

,但什麼樣的字節是這樣嗎?默認的平臺字節?我可以用任何方式指定它嗎?

感謝鄉親

回答

1

例如OPEN有一個:element-type參數,它是實現定義的。你的Common Lisp實現有更多關於它的信息。如註釋中所述,(unsigned-byte 8)描述了在大多數(所有?)實現中恰好是字節大小的流八位字節。謝謝@Xach。

另請參閱flexi-streams其中make-external-formatbinary-types用於自定義二進制編碼。

+0

不錯,我正在從套接字庫中獲取流,所以我沒有深入到足以查看「:external-format」的用法。也感謝CLHS鏈接和'flexi-streams'的建議。 – Baggers

+2

:外部格式僅與字符流相關。 :element-type是適用於二進制流的選項。在實踐中(無符號字節8)是獲得事實上的便攜式二進制流唯一的理智選擇;更小或更大的字節以特定於實現的方式編寫,但(無符號字節8)具有可預測的行爲,即八位字節。 – Xach

+0

@Xach謝謝,我快速閱讀了頁面,並以某種方式將外部格式與元素類型混淆。 – coredump

1

這是無論你從讀取流的元素類型指示。

+0

不錯,我猜這就是那個[#'stream-element-type](http://clhs.lisp.se/Body/f_stm_el.htm)。謝謝 – Baggers