Numeri (WMI)
In MOF i numeri sono cifre che descrivono i valori numerici. MOF offre un'ampia gamma di tipi di dati che si traducono in Automazione e consente anche a tali numeri di essere in formati diversi. Nella tabella seguente sono elencati i valori numerici supportati da MOF.
Tipo di dati | Tipo di automazione | Descrizione |
---|---|---|
sint8 | VT_I2 | Intero con segno a 8 bit. |
sint16 | VT_I2 | Intero con segno a 16 bit. |
sint32 | VT_I4 | Intero con segno a 32 bit. |
sint64 | VT_BSTR | Intero a 64 bit firmato in formato stringa. Questo tipo segue il formato esadecimale o decimale in base alle regole anSI (American National Standards Institute). |
real32 | VT_R4 | Valore a virgola mobile a 4 byte che segue lo standard Institute of Electrical and Electronics Engineers, Inc. (IEEE). |
real64 | VT_R8 | Valore a virgola mobile a 8 byte che segue lo standard IEEE. |
uint8 | VT_UI1 | Intero senza segno a 8 bit. |
uint16 | VT_I4 | Intero senza segno a 16 bit. |
uint32 | VT_I4 | Intero senza segno a 32 bit. |
uint64 | VT_BSTR | Intero senza segno a 64 bit in formato stringa. Questo tipo segue il formato esadecimale o decimale in base alle regole ANSI C. |
Anche se flessibile, il codice MOF rileva alcune modifiche durante la gestione dell'automazione:
È necessario codificare interi a 64 bit come stringhe.
L'automazione non supporta un tipo integrale a 64 bit.
I tipi di automazione non corrispondono sempre alle dimensioni di bit ai tipi di dati MOF.
Ad esempio, Automazione usa VT_I4 per restituire un valore a 16 bit senza segno. Questa discrepanza esiste a causa di problemi di estensione di firma. Se Automazione usata VT_I2 anziché VT_I4, 65.536 sembra essere il valore 1, causando problemi di tipo e intervallo. Analogamente, Automazione rappresenta il tipo uint32 come VT_I4 perché non esiste alcun tipo intero più grande per contenere uint32.
Non è necessario modificare alcuna rappresentazione per i tipi numerali a 8 bit.
Automazione supporta VT_UI1, un tipo senza segno a 8 bit.
MOF supporta costanti lunghe. Si dichiara una costante lunga usando una semplice serie di cifre con un segno negativo facoltativo. Una costante lunga non può superare le dimensioni della variabile dichiarata per conservarla. Alcuni esempi di costanti lunghe sono 1000 e 12310.
MOF supporta anche formati numerici alternativi. La tabella seguente elenca i caratteri speciali da usare per descrivere costanti esadecimali, binarie e ottali.
Costante | Carattere speciale | Esempio |
---|---|---|
Decimal |
Nessuno |
val = 65 |
Valore esadecimale |
Prefisso 0x |
val = 0x41 |
Ottale |
0 iniziale |
val = 0101 |
Binary |
Finale B |
val = 1000001B |
È possibile usare una costante a virgola mobile per rappresentare la notazione scientifica e le frazioni, come illustrato di seguito:
3.14
-3.14
-1.2778E+02
WMI considera costanti a virgola mobile come tipi di VT_R8 per Automazione.
Nell'esempio seguente vengono descritte dichiarazioni di classe e di istanza che illustrano come usare ognuno dei tipi di dati numerici per impostare le proprietà:
Class NumericDataClass
{
[key] uint8 Duint8;
SInt8 Dchar;
UInt16 Dtword;
Sint16 Dinst16;
UInt32 Ddword;
Sint32 Dinst1;
Sint32 Dinst2;
Sint32 Dinst3;
Sint32 Dinst4;
Sint32 Dinst5;
Real32 Dfloat;
Real64 Ddouble1;
Real64 Ddouble2;
};
instance of NumericDataClass
{
Duint8 = 122;
Dchar = -128;
Dtword = 30;
Dinst16 = -1445;
Ddword = 6987777;
Dinst1 = -455589;
Dinst2 = 23;
Dinst3 = 03; // Base 8
Dinst4 = 0xFe; // Base 16
Dinst5 = 11b; // Base 2
Dfloat = 3.1478;
Ddouble1 = 99987.3654;
Ddouble2 = 2.3e-2;
};