跳到主要内容

附录 B. 跳转表 (Jump Table)

为了简洁, 本跳转表不显示为将来扩展而保留的初始字节. 它也只显示了可用于可选特性的初始字节中的一部分. (所有无符号整数均为网络字节序.)

字节结构/语义
0x00..0x17整数 0x00..0x17 (0..23)
0x18无符号整数 (后跟一字节 uint8_t)
0x19无符号整数 (后跟两字节 uint16_t)
0x1a无符号整数 (后跟四字节 uint32_t)
0x1b无符号整数 (后跟八字节 uint64_t)
0x20..0x37负整数 -1-0x00..-1-0x17 (-1..-24)
0x38负整数 -1-n (后跟表示 n 的一字节 uint8_t)
0x39负整数 -1-n (后跟表示 n 的两字节 uint16_t)
0x3a负整数 -1-n (后跟表示 n 的四字节 uint32_t)
0x3b负整数 -1-n (后跟表示 n 的八字节 uint64_t)
0x40..0x57字节串 (后跟 0x00..0x17 字节)
0x58字节串 (后跟表示 n 的一字节 uint8_t, 然后是 n 字节)
0x59字节串 (后跟表示 n 的两字节 uint16_t, 然后是 n 字节)
0x5a字节串 (后跟表示 n 的四字节 uint32_t, 然后是 n 字节)
0x5b字节串 (后跟表示 n 的八字节 uint64_t, 然后是 n 字节)
0x5f字节串, 后跟若干字节串, 以 "break" 终止
0x60..0x77UTF-8 串 (后跟 0x00..0x17 字节)
0x78UTF-8 串 (后跟表示 n 的一字节 uint8_t, 然后是 n 字节)
0x79UTF-8 串 (后跟表示 n 的两字节 uint16_t, 然后是 n 字节)
0x7aUTF-8 串 (后跟表示 n 的四字节 uint32_t, 然后是 n 字节)
0x7bUTF-8 串 (后跟表示 n 的八字节 uint64_t, 然后是 n 字节)
0x7fUTF-8 串, 后跟若干 UTF-8 串, 以 "break" 终止
0x80..0x97数组 (后跟 0x00..0x17 个数据项)
0x98数组 (后跟表示 n 的一字节 uint8_t, 然后是 n 个数据项)
0x99数组 (后跟表示 n 的两字节 uint16_t, 然后是 n 个数据项)
0x9a数组 (后跟表示 n 的四字节 uint32_t, 然后是 n 个数据项)
0x9b数组 (后跟表示 n 的八字节 uint64_t, 然后是 n 个数据项)
0x9f数组, 后跟若干数据项, 以 "break" 终止
0xa0..0xb7映射 (后跟 0x00..0x17 对数据项)
0xb8映射 (后跟表示 n 的一字节 uint8_t, 然后是 n 对数据项)
0xb9映射 (后跟表示 n 的两字节 uint16_t, 然后是 n 对数据项)
0xba映射 (后跟表示 n 的四字节 uint32_t, 然后是 n 对数据项)
0xbb映射 (后跟表示 n 的八字节 uint64_t, 然后是 n 对数据项)
0xbf映射, 后跟若干对数据项, 以 "break" 终止
0xc0基于文本的日期/时间 (后跟数据项; 见第 2.4.1 节)
0xc1基于纪元的日期/时间 (后跟数据项; 见第 2.4.1 节)
0xc2正大数 (后跟数据项 "字节串")
0xc3负大数 (后跟数据项 "字节串")
0xc4十进制小数 (后跟数据项 "数组"; 见第 2.4.3 节)
0xc5大浮点数 (后跟数据项 "数组"; 见第 2.4.3 节)
0xc6..0xd4(带标签的数据项)
0xd5..0xd7预期转换 (后跟数据项; 见第 2.4.4.2 节)
0xd8..0xdb(更多带标签的数据项, 后跟 1/2/4/8 字节, 然后是一个数据项)
0xe0..0xf3(简单值)
0xf4假 (False)
0xf5真 (True)
0xf6空 (Null)
0xf7未定义值 (Undefined)
0xf8(简单值, 后跟一个字节)
0xf9半精度浮点数 (两字节 IEEE 754)
0xfa单精度浮点数 (四字节 IEEE 754)
0xfb双精度浮点数 (八字节 IEEE 754)
0xff"break" 停止码

表 5: 初始字节跳转表