下面的文档是一个模块,现在已经“退役”了,我正在写它的替代品。在我写替换之前,我想弄清我的条款。我知道文档中的条款是错误的——它很快就被破解了,所以我可以指导一所从事该项目硬件方面的大学如何使用我制作的程序。任何感兴趣的人都可以在此处找到完整的文档(尽可能多地编写并添加到我们的 wiki),该网站可能仅适用于某些 IPS(取决于您的 ISP - 大学互联网连接最有可能工作) ,并且 SVN 存储库是私有的。
所以有很多术语是错误的。如。包含值表达式的
分隔符
格式化字符串(现在可能是错误的,但很难说)
这些的正确术语是什么。我还犯了什么错误
==== 包含值表达式的格式化字符串 ====
在我开始实际程序之前,先解释一下:
“包含值表达式的格式化字符串”以及如何在其中编码值。
“包含值表达式的格式化字符串”是进行低级传输的核心。
我们知道十进制 65、十六进制 41、二进制 0100 0001 和 ascii 字符“A”都具有相同的二进制表示,因此要判断我们使用的是哪一个,我们有一系列分隔符 - 数字前面有:
# 是十进制
$ 是十六进制
@ 是二进制的
没有分隔符,然后是ASCII。
在分隔符后放置符号指示符是可选的。如果您想发送一个负数,它是必需的。
您可以将多个值放在同一个字符串中。
例如:“a#21@1001111$-0F”
“包含值表达式的格式化字符串”中的所有值必须在 -128 到 255(包括)范围内,因为它们必须适合 8 个字节(其他值将导致错误)。负数的二进制形式具有 2 的互补表示。
ascii 存在一些问题 - 无法发送的字符(我认为,在未来的版本中,这将通过为 ascii 提供一个分界符和更多代码来使该分界符工作来解决)。
不能发送的字符:
* 描述字符:$#@
* 紧跟在可能包含这些数字的值之后写入的数字:
* 0,1,2,3,4,5,6,7,8,9 为十进制
* 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,A,B,C,D,E,F 十六进制
* 0,1 表示二进制