普通数组
[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