这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战
二级制数(Bits)
字节中的0位到7位,第7位是最高有效位,第0位是最低有效位。每一位都是用0/1来表示。
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 最高位 | 最低位 |
整数数值(Integer)
整数数值是16位,使用大端序(高位字节在低位字节前面)。一味这一个16位的字在网络上表示为最高的有效字节(MSB),后面跟着最低的有效字节(LSB)。
UTF-8编码字符串
UTF-8是一个高效的Unicode字符编码格式,为了支持基文本的通信,它对ASCII字符做了优化。
每一个字符串都有一个两字节的长度字段作为前缀,表示这个字符串UTF-8编码的字节数。因此可以传输的字符串大小有限制,不能超过65535个字节。
除非另有说明,所有的UTF-8编码字符串的长度必须在[0,65535]这个范围内。
| 二进制位 | 7-0 |
|---|---|
byte 1 | 字符串长度的最高有效字节(MSB) |
byte 2 | 字符串长度的最低有效字节(LSB) |
byte [3,n] | 如果长度大于0,这里是UTF-8编码的字符数据 |
字符串中的字符数据必须按照Unicode规范定义。
特别注意:
- 字符数据不能包含字符码在
[U+D800,U+DFFF]之间的数据。 - 字符串不能包含空字符
U+0000 - 数据中不应该包含下面这些编码:
U+0001和U+001F之间的控制字符U+007F和U+009F之间的控制字符Unicode规范定义的非字符代码点(例如U+0FFFF)Unicode规范定义的保留字符(例如U+0FFFF)
如果一个接收者(服务端或客户端)收到了包含以上无效的控制报文,它可以关闭网络连接。
UTF-8编码序列0XEF、0xBB、0xBF总是被解释为U+FEFF(零宽度非换行空白字符),无论它出现在字符串的什么位置,报文接收者都不能跳过或者剥离它。