Angka (WMI)
Di MOF, angka adalah digit yang menjelaskan nilai numerik. MOF menyediakan berbagai jenis data yang diterjemahkan ke dalam Automation, dan juga memungkinkan angka-angka tersebut berada dalam format yang berbeda. Tabel berikut mencantumkan nilai numerik yang didukung MOF.
Jenis Data | Jenis automasi | Deskripsi |
---|---|---|
sint8 | VT_I2 | Bilangan bulat 8-bit yang ditandatangani. |
sint16 | VT_I2 | Bilangan bulat 16-bit yang ditandatangani. |
sint32 | VT_I4 | Bilangan bulat 32-bit yang ditandatangani. |
sint64 | VT_BSTR | Bilangan bulat 64-bit yang ditandatangani dalam bentuk string. Jenis ini mengikuti format heksadesimal atau desimal sesuai dengan aturan American National Standards Institute (ANSI) C. |
real32 | VT_R4 | Nilai floating-point 4-byte yang mengikuti standar Institute of Electrical and Electronics Engineers, Inc. (IEEE). |
real64 | VT_R8 | Nilai floating-point 8-byte yang mengikuti standar IEEE. |
uint8 | VT_UI1 | Bilangan bulat 8-bit yang tidak ditandatangani. |
uint16 | VT_I4 | Bilangan bulat 16-bit yang tidak ditandatangani. |
uint32 | VT_I4 | Bilangan bulat 32-bit yang tidak ditandatangani. |
uint64 | VT_BSTR | Bilangan bulat 64-bit yang tidak ditandatangani dalam bentuk string. Jenis ini mengikuti format heksadesimal atau desimal sesuai dengan aturan ANSI C. |
Meskipun fleksibel, kode MOF memang mengalami beberapa perubahan saat berhadapan dengan Automation:
Anda harus mengodekan bilangan bulat 64-bit sebagai string.
Automasi tidak mendukung jenis integral 64-bit.
Jenis otomatisasi tidak selalu sesuai dalam ukuran bit dengan jenis data MOF.
Misalnya, Automation menggunakan VT_I4 untuk mengembalikan nilai 16-bit yang tidak ditandatangani. Perbedaan ini ada karena masalah ekstensi tanda tangan. Jika Automation digunakan VT_I2 alih-alih VT_I4, 65.536 akan tampak sebagai nilai 1, menyebabkan masalah jenis dan rentang. Demikian pula, Automation mewakili jenis uint32 sebagai VT_I4 karena tidak ada jenis bilangan bulat yang lebih besar untuk berisi uint32.
Anda tidak perlu mengubah representasi apa pun untuk jenis angka 8-bit.
Automation mendukung VT_UI1, jenis 8-bit yang tidak ditandatangani.
MOF mendukung konstanta panjang. Anda mendeklarasikan konstanta panjang menggunakan serangkaian digit sederhana dengan tanda negatif opsional. Konstanta panjang tidak boleh melebihi ukuran variabel yang dinyatakan menahannya. Beberapa contoh konstanta panjang adalah 1000 dan 12310.
MOF juga mendukung format numerik alternatif. Tabel berikut mencantumkan karakter khusus yang harus Anda gunakan untuk menjelaskan konstanta heksadesimal, biner, dan oktal.
Terus-menerus | Karakter khusus | Contoh |
---|---|---|
Desimal |
Tidak ada |
val = 65 |
Heksadesimal |
Awalan 0x |
val = 0x41 |
Oktal |
Leading 0 |
val = 0101 |
Biner |
Trailing B |
val = 1000001B |
Anda dapat menggunakan konstanta floating-point untuk mewakili notasi ilmiah serta pecahan, seperti yang ditunjukkan berikutnya:
3.14
-3.14
-1.2778E+02
WMI menganggap konstanta floating-point sebagai jenis VT_R8 untuk Automation.
Contoh berikut menjelaskan deklarasi kelas dan instans yang menggambarkan cara menggunakan setiap jenis data numerik untuk mengatur properti:
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;
};