Quantity Node é um tipo de Node de comprimento variável que representa grandezas físicas, valores numéricos, moedas e literais.

CaracterísticaDescrição
Comprimento variável4~N palavras (conforme tamanho do valor)
Unidade explícitaSI base/derivado + não-SI (moeda, tempo, etc.)
Suporte de escalaPrefixo como potência de 10
Literais especiaisTempo (timestamp), string (UTF-16), cor (RGBA)
TID no finalCaracterística de Node (consistência com Entity)

Usos: Object do Triple Edge, participante do Verb Edge, participante do Event6, nome/rótulo de entidade, representação temporal, etc.

Estrutura do pacote

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

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

3rd+ WORD: Value (variável, 1/2/4 palavras conforme Size)

Last WORD (16 bits)
┌─────────────────────────────────────────┐
│                  TID                    │
│                 16bit                   │
└─────────────────────────────────────────┘
CampoBitsTamanhoDescrição
Prefix1-10100001 000 010 (Quantity Node)
Unit11-16664 códigos de unidade
Sign1710=positivo, 1=negativo
Size18-192Número de palavras do Value
Type2010=inteiro, 1=ponto flutuante
Scale21-244Potência de 10 (offset 8)
Reserved25-328Reservado (código de moeda quando é divisa)

Tamanho do pacote por Size

SizePalavras do ValueTotal de palavras
001 (16 bits)4
012 (32 bits)5
104 (64 bits)7

Códigos de unidade (6 bits = 64)

Unidades base SI (0x00~0x06)

CódigoUnidadeSímboloGrandeza
0x00metermComprimento
0x01kilogramkgMassa
0x02secondsTempo
0x03ampereACorrente elétrica
0x04kelvinKTemperatura
0x05molemolQuantidade de substância
0x06candelacdIntensidade luminosa

Unidades derivadas SI (0x07~0x1C)

CódigoUnidadeSímboloGrandeza
0x07hertzHzFrequência
0x08newtonNForça
0x09pascalPaPressão
0x0AjouleJEnergia
0x0BwattWPotência
0x0CcoulombCCarga elétrica
0x0DvoltVTensão
0x0EfaradFCapacitância
0x0FohmΩResistência
0x10siemensSCondutância
0x11weberWbFluxo magnético
0x12teslaTCampo magnético
0x13henryHIndutância
0x14celsius°CTemperatura
0x15lumenlmFluxo luminoso
0x16luxlxIluminância
0x17becquerelBqRadioatividade
0x18grayGyDose absorvida
0x19sievertSvDose equivalente
0x1AkatalkatAtividade catalítica
0x1BradianradÂngulo plano
0x1CsteradiansrÂngulo sólido

Unidades não-SI (0x20~0x2F)

CódigoUnidadeUso
0x20CURRENCYMoeda (extensão de código de divisa)
0x21percent% (proporção)
0x22degree° (ângulo)
0x23~0x28minute~yearUnidades de tempo
0x29bitQuantidade de informação
0x2AbyteQuantidade de informação
0x2B~0x2FCOUNT~INDEXValores sem unidade

Literais especiais (0x30~0x3F)

CódigoTipoPayloadUso
0x30TIMESTAMP_SEC2/4 palavrasTimestamp Unix (segundos)
0x31TIMESTAMP_MS4 palavrasTimestamp Unix (milissegundos)
0x32UTF162+N palavrasString UTF-16
0x33RGBA2 palavrasCor (32 bits)

Scale (4 bits)

Potência de 10. Aplica-se um offset de 8. Cálculo: valor real = Value × 10^(Scale - 8)

CódigoValorPrefixoCódigoValorPrefixo
000010⁻⁸-100010⁰ (base)-
001010⁻⁶μ100110¹da
010110⁻³m101110³k
011010⁻²c111010⁶M

Extensão de moeda (Unit = 0x20)

Quando é CURRENCY, os 8 bits Reserved são usados como código de divisa.

CódigoMoedaISOCódigoMoedaISO
0x00Dólar americanoUSD0x05Won coreanoKRW
0x01EuroEUR0x06Franco suíçoCHF
0x02Iene japonêsJPY0x07Dólar australianoAUD
0x03Libra esterlinaGBP0x08Dólar canadenseCAD
0x04Yuan chinêsCNY0x80BitcoinBTC

Exemplos

“100kg” → 4 palavras

1st: [Prefix] + [0x01(kg)]
2nd: +, 1 palavra, int, ×1     → 0x0800
3rd: 0x0064 (100)
4th: TID
Interpretação: +100 × 10⁰ kg = 100kg

“$2.500.000” → 4 palavras (uso de escala)

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