【问题标题】:Common Lisp struggle with read-byte/write-byteCommon Lisp 与读字节/写字节的斗争
【发布时间】:2011-06-18 13:35:59
【问题描述】:

我希望能够写入字节并从标准输入/输出读取它们,但是当我在 SBCL 中尝试此操作时,我收到错误“流没有合适的方法 [...]”,这是为什么以及如何我打算制作自己的可以处理字节的流?

【问题讨论】:

    标签: stream byte common-lisp


    【解决方案1】:

    这似乎是因为标准输入和输出流是元素类型为character 的流,而不是(unsigned-byte 8)。流的元素类型通常在打开流时配置,在标准输入/输出的情况下,在解释器启动时自动完成。

    但是,SBCL 具有二价流的概念,它可以同时支持面向字符和面向字节的 I/O。碰巧,在我的机器上,

    * (read-byte *standard-input* nil)
    a
    
    97
    * (read-char *standard-input* nil)
    a
    
    #\a
    

    工作正常。那么,您使用的是哪个版本的 SBCL?我的是 SBCL 1.0.49。

    【讨论】:

    • 嗯,嗯,我目前使用的是 1.0.45 版本,我想从那以后发生了一些修改。那我就没有办法打开自己的比特流了吗?我知道 with-open-file 的存在,但这不是仅用于打开/创建实际文件吗?
    • 您可以尝试从他们的 FD 创建流(0 个标准输入、1 个标准输出、2 个标准错误,参见 sbcl.org/manual/File_002ddescriptors.html)。免责声明:在我之前没有使用过这些。可能会奏效。可能不会……
    • 好的,我刚刚将 SBCL 更新到 1.0.49,我会阅读您发给我的文档,谢谢您的回答!编辑:嗯,好吧,那太糟糕了。好像真的是 SLIME 有这个问题,好吧,我会在谷歌上嘲笑并尝试找到解决方案。
    • @Johan 你也可以在 freenode 的#lisp 频道中询问专业人士。我对这个问题很感兴趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多