Quantity Node 是表达物理量、数值、货币、字面量等的可变长度 Node 类型。

特性说明
可变长度4~N字(取决于值的大小)
单位明示SI 基本/导出 + 非SI(货币、时间等)
比例支持用10的幂次表达前缀
特殊字面量时间(timestamp)、字符串(UTF-16)、颜色(RGBA)
TID 在末尾Node 特性(与实体一致)

用途: 三元组边的 Object、Verb Edge 的参与者、事件6的参与者、实体的名称/标签、时间表达等。

数据包结构

1st WORD (16位)
┌────────────────────┬────────────────────┐
│      Prefix        │       Unit         │
│      10bit         │       6bit         │
└────────────────────┴────────────────────┘

2nd WORD (16位)
┌──────┬──────┬──────┬────────────────────┐
│ Sign │ Size │ Type │      Scale         │
│ 1bit │ 2bit │ 1bit │       4bit         │
├──────┴──────┴──────┴────────────────────┤
│              Reserved (8bit)            │
└─────────────────────────────────────────┘

3rd+ WORD: Value (可变, 取决于Size为1/2/4字)

Last WORD (16位)
┌─────────────────────────────────────────┐
│                  TID                    │
│                 16bit                   │
└─────────────────────────────────────────┘
字段大小说明
Prefix1-10100001 000 010 (Quantity Node)
Unit11-16664种单位代码
Sign1710=正数, 1=负数
Size18-192Value 字数
Type2010=整数, 1=浮点数
Scale21-24410的幂次(偏移8)
Reserved25-328保留(货币时为货币代码)

按Size的数据包大小

SizeValue 字数总字数
001 (16位)4
012 (32位)5
104 (64位)7

Unit 代码(6位 = 64种)

SI 基本单位(0x00~0x06)

代码单位符号物理量
0x00meterm长度
0x01kilogramkg质量
0x02seconds时间
0x03ampereA电流
0x04kelvinK温度
0x05molemol物质的量
0x06candelacd发光强度

SI 导出单位(0x07~0x1C)

代码单位符号物理量
0x07hertzHz频率
0x08newtonN
0x09pascalPa压力
0x0AjouleJ能量
0x0BwattW功率
0x0CcoulombC电荷
0x0DvoltV电压
0x0EfaradF电容
0x0FohmΩ电阻
0x10siemensS电导率
0x11weberWb磁通量
0x12teslaT磁场
0x13henryH电感
0x14celsius°C温度
0x15lumenlm光通量
0x16luxlx照度
0x17becquerelBq放射性
0x18grayGy吸收剂量
0x19sievertSv剂量当量
0x1Akatalkat催化活性
0x1Bradianrad平面角
0x1Csteradiansr立体角

非SI单位(0x20~0x2F)

代码单位用途
0x20CURRENCY货币(货币代码扩展)
0x21percent%(比例)
0x22degree°(角度)
0x23~0x28minute~year时间单位
0x29bit信息量
0x2Abyte信息量
0x2B~0x2FCOUNT~INDEX无单位数值

特殊字面量(0x30~0x3F)

代码类型Payload用途
0x30TIMESTAMP_SEC2/4字Unix timestamp(秒)
0x31TIMESTAMP_MS4字Unix timestamp(毫秒)
0x32UTF162+N字UTF-16 字符串
0x33RGBA2字颜色(32位)

Scale(4位)

10的幂次。应用偏移8。计算: 实际值 = Value × 10^(Scale - 8)

代码前缀代码前缀
000010⁻⁸-100010⁰(基准)-
001010⁻⁶μ100110¹da
010110⁻³m101110³k
011010⁻²c111010⁶M

货币扩展(Unit = 0x20)

当为货币(CURRENCY)时,Reserved 8位用作货币代码。

代码货币ISO代码货币ISO
0x00美元USD0x05韩元KRW
0x01欧元EUR0x06瑞士法郎CHF
0x02日元JPY0x07澳元AUD
0x03英镑GBP0x08加元CAD
0x04人民币CNY0x80BitcoinBTC

示例

“100kg” → 4字

1st: [Prefix] + [0x01(kg)]
2nd: +, 1字, int, ×1     → 0x0800
3rd: 0x0064 (100)
4th: TID
解释: +100 × 10⁰ kg = 100kg

“$2,500,000” → 4字(利用比例)

1st: [Prefix] + [0x20(CURRENCY)]
2nd: +, 1字, int, ×10³, USD  → 0x0B00
3rd: 0x09C4 (2500)
4th: TID
解释: +2500 × 10³ USD = $2,500,000