Nedokážu Vám poradit přesnou syntaxi v VB, ale způsob, jak na to, ano. V jazyce C by to vypadalo takto:
#include <stdio.h>
// input - vstupni sekvence bitu
// N - pocet bitu v sekvenci
// p - pozice, od ktere se maji vratit bity
// m - pocet bitu, ktere chci vratit
int getBits(int input, int p, const int N, const int m)
{
int i;
int output = 0;
for (i = N - 1; i >= 0; i--)
{
if (i < N - p && i >= (N - (p + m)))
{
output |= (1 << i) & input;
}
}
output = output >> (N - (p + m));
return output;
}
int main()
{
printf("%d", getBits(0b1101110111, 5, 10, 3));
return 0;
}
V ukázce předávám do funkce getBits sekvence 1101110111, dále říkám, že chci bity od páté pozice (počítáno od nuly), délka sekvence je 10 a chci vrátit 3 bity. Požaduji tedy výstup 101. Funkce vrátí číslo 5, což po převedení do binární soustavy je opravdu 101. Jestli tohle přepíšete do VB (asi to bude podobné, ale opravdu nevím), mělo by to fungovat.
|