1

我在 Scratch 中遇到越来越多的情况,我必须将数字转换为其 ACSII 字符,反之亦然。块中没有为此构建的功能。

我的解决方案是创建一个大小为 26 的列表,并使用名为 alphabet = "abcdefghijklmnopqrstuvwxyz" 的变量将字母 AZ 添加到每个序列中,并使用重复块对其进行迭代,并将 ALPHABET 的 LETTER COUNT 附加到列表中。结果是列表数据在位置 1 到 26 之间带有字母 A_Z 的结构。实际上是在创建我自己的 ASCII 表。

要进行从数字 26 到“Z”的转换,我必须遍历列表以获得正确的 CHAR 值。它确实减慢了严重依赖 CHR() 功能的程序。有没有更好或更有效的解决方案?

4

2 回答 2

1

我的解决方案是创建一个大小为 26 的列表,并使用名为 alphabet = "abcdefghijklmnopqrstuvwxyz" 的变量将字母 AZ 附加到每个序列中

停在那儿。您甚至不需要将其转换为列表。您可以直接从字符串中查找它。

从索引中获取字符非常容易。只需使用(letter () of [])块。

获取字符的索引更复杂。不幸的是,Scratch 没有内置的方法来做到这一点。我在这里要做的是定义一个index of [] in [] 自定义的伪报告器块

define index of (char) in (str)
set [i v] to [1]
repeat until <<(i) = (length of (str))> or <(letter (i) of (str)) = (char)>>
    change [i v] by (1)

在线查看

然后您可以调用该块 asindex of [a] in (alphabet)并将i变量设置为 1。

如果找不到该字符,此代码没有任何情况,但如果您需要,我提供的链接确实包含该字符。

于 2015-05-21T19:12:08.943 回答
0

您也可以使用Snap!这类似于 Scratch,但有更多的块。折断!有一个 unicode 块,它将一个字符转换为其 ASCII 或 unicode 值。

于 2015-07-27T19:06:02.873 回答