Запрос на интерпретацию однострочного кода VBA - PullRequest
0 голосов
/ 23 сентября 2018

Следующий код покрывает значение цвета для массива 3D RGB

Function Decimal2RGB(color_val)
    Decimal2RGB = Array(color_val \ 256 ^ 0 And 255, color_val \ 256 ^ 1 And 255, color_val \ 256 ^ 2 And 255)
End Function

Еще один подобный сабл

Sub Sample()
    Dim Col As Long

    '~~> RGB to LONG
    Col = RGB(255, 111, 254)

    Debug.Print Col

    '~~> LONG To RGB
    R = Col Mod 256
    G = (Col \ 256) Mod 256
    B = (Col \ 256 \ 256) Mod 256

    Debug.Print R
    Debug.Print G
    Debug.Print B
End Sub

Мой вопрос заключается в том, что делает оператор «И» впервая подпрограмма?

Пример выполнения первой подпрограммы: {=Decimal2RGB(258)} производит {2, 1, 0}.

1 Ответ

0 голосов
/ 23 сентября 2018

Как сказал Jeeped, And - это побитовый оператор в VBA.
Таким образом, And 255 маскирует все биты выше, чем 8-й.Например:

455dec -> 111000111  
255dec -> 011111111  
And    -> 011000111 -> 199dec
...