Quantity Node est un type de Node a longueur variable representant les grandeurs physiques, valeurs numeriques, devises et litteraux.

CaracteristiqueDescription
Longueur variable4~N mots (selon la taille de la valeur)
Unite expliciteSI de base/derivees + non-SI (devises, temps, etc.)
Support d’echellePrefixes exprimes en puissances de 10
Litteraux speciauxHorodatage, chaines (UTF-16), couleurs (RGBA)
TID en finPropriete des Node (coherence avec Entity Node)

Usages : Object du Triple Edge, participant du Verb Edge, participant de l’Event6 Edge, nom/label d’entite, expressions temporelles, etc.

Structure du paquet

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 (variable, 1/2/4 mots selon Size)

Last WORD (16 bits)
┌─────────────────────────────────────────┐
│                  TID                    │
│                 16bit                   │
└─────────────────────────────────────────┘
ChampBitsTailleDescription
Prefix1-10100001 000 010 (Quantity Node)
Unit11-16664 codes d’unite
Sign1710=positif, 1=negatif
Size18-192Nombre de mots de la valeur
Type2010=entier, 1=virgule flottante
Scale21-244Puissance de 10 (decalage 8)
Reserved25-328Reserve (code devise si devise)

Taille du paquet selon Size

SizeMots de valeurTotal mots
001 (16 bits)4
012 (32 bits)5
104 (64 bits)7

Codes Unit (6 bits = 64)

Unites SI de base (0x00~0x06)

CodeUniteSymboleGrandeur
0x00metermLongueur
0x01kilogramkgMasse
0x02secondsTemps
0x03ampereACourant electrique
0x04kelvinKTemperature
0x05molemolQuantite de matiere
0x06candelacdIntensite lumineuse

Unites SI derivees (0x07~0x1C)

CodeUniteSymboleGrandeur
0x07hertzHzFrequence
0x08newtonNForce
0x09pascalPaPression
0x0AjouleJEnergie
0x0BwattWPuissance
0x0CcoulombCCharge electrique
0x0DvoltVTension
0x0EfaradFCapacite electrique
0x0FohmΩResistance
0x10siemensSConductance
0x11weberWbFlux magnetique
0x12teslaTChamp magnetique
0x13henryHInductance
0x14celsius°CTemperature
0x15lumenlmFlux lumineux
0x16luxlxEclairement
0x17becquerelBqRadioactivite
0x18grayGyDose absorbee
0x19sievertSvEquivalent de dose
0x1AkatalkatActivite catalytique
0x1BradianradAngle plan
0x1CsteradiansrAngle solide

Unites non-SI (0x20~0x2F)

CodeUniteUsage
0x20CURRENCYDevise (extension code devise)
0x21percent% (ratio)
0x22degree° (angle)
0x23~0x28minute~yearUnites de temps
0x29bitQuantite d’information
0x2AbyteQuantite d’information
0x2B~0x2FCOUNT~INDEXValeurs sans unite

Litteraux speciaux (0x30~0x3F)

CodeTypePayloadUsage
0x30TIMESTAMP_SEC2/4 motsUnix timestamp (secondes)
0x31TIMESTAMP_MS4 motsUnix timestamp (millisecondes)
0x32UTF162+N motsChaine UTF-16
0x33RGBA2 motsCouleur (32 bits)

Scale (4 bits)

Puissance de 10. Decalage de 8. Calcul : valeur_reelle = Value x 10^(Scale - 8)

CodeValeurPrefixeCodeValeurPrefixe
000010⁻⁸-100010⁰ (par defaut)-
001010⁻⁶μ100110¹da
010110⁻³m101110³k
011010⁻²c111010⁶M

Extension devise (Unit = 0x20)

Lorsque l’unite est CURRENCY, les 8 bits Reserved sont utilises comme code devise.

CodeDeviseISOCodeDeviseISO
0x00Dollar USUSD0x05Won coreenKRW
0x01EuroEUR0x06Franc suisseCHF
0x02Yen japonaisJPY0x07Dollar australienAUD
0x03Livre sterlingGBP0x08Dollar canadienCAD
0x04Yuan chinoisCNY0x80BitcoinBTC

Exemples

“100kg” → 4 mots

1st: [Prefix] + [0x01(kg)]
2nd: +, 1 mot, int, x1     → 0x0800
3rd: 0x0064 (100)
4th: TID
Interpretation: +100 x 10⁰ kg = 100kg

“$2,500,000” → 4 mots (utilisation d’echelle)

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