如何解决以 256 为模数递增 1
我正在尝试发送数据包。我已经建立了可靠的通信。我从客户端收到了一个 0x00 的序列号。我被告知将该序列号增加一个模 256 并将其发送到我的下一个串行 API 标头中。我很困惑他们所说的增加一个模 256 是什么意思。
解决方法
为了简单地恢复,每次都必须发送 API 标头:
- 增加接收到的序列号。
- 如果序列号是 256,则将其重置为 0。
- 将结果序列号与您的下一个串行 API 标头一起发送。
解释增量1模256的确切含义:
这意味着预期的序列号应该是 ( received sequence number from the client
+ 1 ) modulo 256。如果你考虑数学,这意味着你的结果序列号应该始终是 0 到 255 之间的值作为模 256任何整数只能是(对于 -128 和 +127 之间的有符号整数,模运算将给出相同的二进制结果,无论您认为是有符号还是无符号整数)。所以每次序列达到256时,都是从0重新开始:
客户端序列号 | 你发送 |
---|---|
0 | 1 |
1 | 2 |
.. | .. |
254 | 255 |
255 | 0 |
0 | 1 |
.. | .. |
正如你所说:
我收到一个序列号 0x00
这意味着接收到的序列号是一个字节,因此它只能是 0 到 255 之间的正整数(或 -128 到 +127 之间的有符号整数,但模运算将给出相同的二进制结果,无论您考虑有符号或无符号整数)。如果接收到的序列号不仅仅是一个字节,那么它可以是所提供格式范围内的任何整数。在这种情况下,您仍然必须应用所需的公式。带有字型客户端序列号的示例:
客户端序列号 | 你发送 |
---|---|
0 | 1 |
1 | 2 |
.. | .. |
255 | 0 |
256 | 1 |
257 | 2 |
.. | .. |
510 | 255 |
511 | 0 |
512 | 1 |
.. | .. |
4336 | 241 |
.. | .. |
我被告知将该序列号增加一个模 256
表示增加一并应用模 256 对结果 以获得您的序列号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。