1

下面的文档是一个模块,现在已经“退役”了,我正在写它的替代品。在我写替换之前,我想弄清我的条款。我知道文档中的条款是错误的——它很快就被破解了,所以我可以指导一所从事该项目硬件方面的大学如何使用我制作的程序。任何感兴趣的人都可以在此处找到完整的文档(尽可能多地编写并添加到我们的 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 表示二进制
4

2 回答 2

1

首先,定界符可能是定界符,尽管我注意到您的文本中既有定界符又有定界符-也许定界符是一种特殊的定界符/终止符组合:-)

但是,分隔符通常用于分隔字段,并且通常无论如何都会出现。您拥有的是一个可选前缀,它指示以下字段类型。所以我可能会称之为“前缀”或“类型前缀”。

“包含值表达式的格式化字符串”我只需调用“值表达式字符串”或“值字符串”来将其更改为更短的形式。

另一个可能的问题:

必须在 -128 到 255(含)范围内,因为它们必须适合 8 个字节

我想你的意思是 8

于 2010-02-28T11:05:09.993 回答
1

尝试以下操作:

     ==== 值字符串编码 ====
    值字符串是用于低级别的数据的核心
    传输。

    在值字符串中,使用了以下修正:
    # 十进制
    $十六进制
    @二进制
    无前缀 - ASCII。

    在负数的分隔符之后可以包含一个可选的符号。
    负数使用二进制补码表示。

    值字符串可能包含多个值:
    例如:“a#21@1001111$-0F”

    值字符串的所有元素必须代表一个 8 位值,并且必须
    在 -128 到 255 的范围内

    使用 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 表示二进制


于 2010-02-28T11:15:51.357 回答