Compartir a través de


Interpretación de las propiedades de bitfield

Algunas propiedades de objeto SMS se implementan como campos de bits, donde los bits binarios individuales de un entero (normalmente un tipo de datos uint32 ) se usan como marcas booleanas para almacenar información. Estas propiedades pueden ser difíciles de interpretar en la interfaz de usuario porque el campo de bits a menudo se muestra como un número decimal.

Por ejemplo, el objeto Security User Class Permissions (SMS_UserClassPermissions) contiene una propiedad entera denominada ClassPermissions, que se define como un tipo de datos int32 con las siguientes marcas de bits:

Poco Flag
0 LEER
1 MODIFICAR
2 DELETE
3 DISTRIBUIR
4 CREATE_CHILD
5 REMOTE_CONTROL
6 ANUNCIAR
7 MODIFY_RESOURCE
8 ADMINISTRAR
9 DELETE_RESOURCE
10 CREAR
11 VIEW_COLL_FILE
12 READ_RESOURCE
13 DELEGADO
14 METRO
15 MANAGESQLCOMMAND
16 MANAGESTATUSFILTER

Un valor típico de este campo de bits podría ser 10100000111. El bit 0 es el bit menos significativo (a la derecha) y los demás bits se cuentan de derecha a izquierda. Por lo tanto, en este ejemplo, los permisos de clase disponibles incluyen READ, MODIFY, DELETE, ADMINISTER y CREATE, correspondientes a los campos de bits 0, 1, 2, 8 y 10, respectivamente.

La dificultad surge cuando el número binario 10100000111 aparece como el número decimal 1287 en una pantalla de la consola del administrador de SMS y cómo se interpretan los bits. La solución consiste en abrir la aplicación Calculadora de Windows (Calc.exe, en el grupo Accesorios). Use la vista Científica, establezca la calculadora para el modo decimal y escriba 1287. Use los botones de radio de la calculadora para convertir en una pantalla binaria. Aparece el campo de bits binario 10100000111. Puede leer las marcas de bits seleccionadas en esta pantalla.

Nota:

En una propiedad de campo de bits típica, muchos de los bits no se usan y no tienen ningún significado definido.