递增 1 模 256

increment by one modulo 256

我正在尝试发送数据包。我已经建立了可靠的通信。我从客户端收到了序列号 0x00。我被告知将该序列号增加一个模数 256 并在我的下一个序列 API header 中发送它。我对以 1 模 256 递增的含义感到困惑。

简单恢复,每次都要发送API header :

  1. 增加接收到的序列号。
  2. 如果序列号为256,则将其重置为0。
  3. 将生成的序列号与您的下一个序列号一起发送 API header.

解释自增1模256的确切含义:

这意味着预期的序列号应该是 ( received sequence number from the client + 1 ) 模 256。如果您考虑数学,这意味着您得到的序列号应该始终是 0 到 255 之间的值,因为任何整数的模 256 只能是那个(对于 -128 和 +127 之间的有符号整数,模运算将给出相同的二进制结果,无论您认为整数有符号还是无符号)。所以每次序列到达256,都是从0重新开始:

Client sequence number You send
0 1
1 2
.. ..
254 255
255 0
0 1
.. ..

如你所说:

I received a sequence number of 0x00

表示接收到的序列号是一个字节,因此只能是0到255之间的正整数(或者-128到+127之间的有符号整数,但是模运算得到的二进制结果是一样的,无论你认为整数有符号或无符号)。如果接收到的序列号不仅仅是一个字节,那么它可以是所提供格式范围内的任何整数。在这种情况下,您仍然必须应用所需的公式。带有单词类型客户端序列号的示例:

Client sequence number You send
0 1
1 2
.. ..
255 0
256 1
257 2
.. ..
510 255
511 0
512 1
.. ..
4336 241
.. ..

I'm told to increment that sequence number by one modulo 256

表示以 1 递增并对结果应用模 256 以获得您的序列号。