gpt4 book ai didi

forth - 如何从 gforth 中的标准输入读取内容并将其存储在变量中?

转载 作者:行者123 更新时间:2023-12-04 05:36:54 26 4
gpt4 key购买 nike

我在阅读文档后尝试了以下代码:

   create buff 128 allot
buff 128 stdin read-line throw

我希望这会为每个连续的 buff 地址得到一个字符,但我在那里得到了这个奇怪的数字:

buff @  ok
. 3689349013085184353 ok

我在这里错过了什么?

最佳答案

buff 将您的 buff 变量的地址放在(数据)堆栈上。该地址的内存包含从 stdin 接收的输入,如下所示:

Address  Value
------- -----
N+0 0x61
N+1 0x61
N+2 0x61
N+3 0x61
N+4 0x61
N+5 0x33
N+6 0x33
N+7 0x33
... ...

@ 字将buff 留下的地址转换为该地址的整数值。但是因为你(显然)有一个 64 位的 gforth 版本,@ 返回一个 64 位的,即 8 字节的值,从给定的地址开始,即0x3333336161616161,即十进制的3689349013085184353. 单词只是向您展示了那个数字。

如果要获取特定的字节,请使用c@ 而不是@:

buff c@ .

这将为您提供缓冲区中第一个字符的代码(0x6197)。如果要获取第二项,请在执行 c@ 之前递增地址,如下所示:

buff 1+ c@ .

同样,这会得到第六个字符的代码:

buff 5 + c@ .

关于forth - 如何从 gforth 中的标准输入读取内容并将其存储在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com