一篇文章看懂数组的编码规则

普通数组

[1,2,3]

前缀:数组(Array):

数组的前缀是 0x8n,其中 n 表示数组的长度。

如果数组长度在 0 到 23 之间,直接使用 0x8n。

如果数组长度在 24 到 255 之间,使用 0x83 + 长度字节。

如果数组长度在 256 到 65535 之间,使用 0x84 + 两个长度字节。

如果数组长度更大,使用更多的字节表示长度。

这一题就是0x83

整数:

小整数(0-23):

直接使用 0x00 到 0x17 表示整数。

较大整数(24-255):

使用 0x18 加上一个字节表示整数。

更大的整数(256-65535):

使用 0x19 加上两个字节表示整数。

更大的整数(65536-4294967295):

使用 0x1A 加上四个字节表示整数。

更大的整数(大于 4294967295):

使用 0x1B 加上八个字节表示整数。

所以连起来就是0x83010203

嵌套数组

[1,[2,3], [4,5]]

前缀:整个数组有三位,所以前缀用0x83

内部:第一位是整数用0x01

第二位是数组用0x82,里面也是两个整数,同理加一起就剩0x820203

第三位类似,0x820405

拼一起就是0x8301820203820405

较大整数数组

例如:[24, 25, 26]

前缀:0x83

整数:由于24属于较大整数用0x18+24的十六进制表示,就是0x1818,同理后面是0x1819,0x181A

加一起来就是0x8318181819181A

更大的整数数组

[500, 501, 502]

前缀:0x83

整数:由于500属于较大整数用0x19+500的十六进制表示,就是0x1901F4,同理后面是0x1901F5,0x1901F6

加一起来就是0x831901F41901F51901F6

Copyright © 2088 斯诺克世界杯_世界杯排名榜 - zhaoxiaotian.com All Rights Reserved.
友情链接