buenas, comparto estos codes que hice que me son de mucha utilidad cuando trabajan con bits
Código
La funcion MIdBit usa la funcion LenBits pueden agregarle el codigo de la funcion lenBits al Midbits tambien...
'--------------------------Mid de Bits---------------------------------- ' obtenemos solamente la cantidad y la posicion de bits que queremos Function MidBit(DWord As Long, StartB As Byte, LengthB As Byte) As Long Dim ln As Byte Dim sleft As Byte Dim FFFF As Long ln = LenBi(DWord) sleft = (ln - StartB) + 1 ' Obtemos la mascara creada por los mismo bits ' 1111 1111 1111 1111... ? Do While sleft FFFF = (FFFF * 2) + 1 sleft = sleft - 1 Loop MidBit = FFFF And DWord MidBit = MidBit \ 2 ^ (ln - ((StartB - 1) + LengthB)) End Function ' By Raul100 no quitar texto
Algo importante la funcion MidBit trata directamente con los Bits asi que debemos saber cuando bits usa el numero
que introduciremos esta funcion toma en cuenta los 0's a la izquierda ( es normal ) porque obviamente no valen nada.
Tambien algo importante MidBit NO es toma los Bits como Cadenas
Por ejemplo si tenemos este binario:
0000 0010 0010 0000
queremos obtener los Bits que esta en negrita, Obtendremos 10 ( el 0 de la izquierda no vale nada )
eso es de esperarselo tambien se puede modificar para que lo obtenga pero no tendria logica
lo correcta es que no lo tome
Código
'----------------------LenBits-------------------------- ' Obtenemos la longitud de bits en "uso" ' LenBits para 32 Bits... Function LenBi(Bits As Long) As Byte Dim l As Long: l = 1 Dim c As Byte 'Max = 0000 0000 0000 0000 0000 0000 0000 0000 = 32 Bits Do l = l * 2: c = c + 1 If ((&H80000000 / l) And Bits) Then l = 0 Loop While l LenBi = &H20 - c End Function ' By Raul100 no quitar texto
La funcion LenBi obtiene el numero de bits en "uso"
por ejemplo el binario:
0000 0001 0101 0010
Obtendremos 9 ( los bits de la izquierda no valen nada )
y es logico y no tendria sentido sino usaramos la de VB
es mas yo creo que asi funciona la funcion real de VB creo
las funciones son para 32Bits se pueden modificar para 64Bits usando dos de tipo Longs tambien