当使用流的读取字节时,我正在读取什么样的字节

When using stream's read-byte what kind of byte am I reading

如果我理解正确的话,common lisp 是在一个存在许多不同体系结构且对字节大小有不同意见的时代标准化的。为此,common lisp 允许我们定义一个字节的大小。

例如,我可以像这样创建一个 8 位字节的数组:

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

这很好用,到目前为止,无论我做什么,这些知识都足够了。

今天虽然我开始使用二进制流,但 read-byte 函数让我感到困惑。

CLHS 表示 read-byte reads and returns one byte from stream.

但是这是什么类型的字节?默认平台字节?我可以用任何方式指定吗?

谢谢大家

它是您从中读取的流的元素类型所指示的。

例如 OPEN 有一个 :element-type 参数,它是实现定义的。你的 Common Lisp 实现有更多关于它的信息。正如评论中所说, (unsigned-byte 8) 描述了一个流八位字节,它恰好是大多数(所有?)实现中的字节大小。谢谢@Xach。

另请参阅 flexi-streams which has make-external-format and binary-types 了解自定义二进制编码。