Я пытаюсь объединить три байтовых значения в одно длинное значение, как это делает System.Drawing.Color.ToArgb ().
Я искал справочный исходный код, чтобы найти его и преобразовал в VB .NET:
Return CLng((CInt(red) << 16 Or CInt(green) << 8 Or blue Or CInt(alpha) << 24) And -1)
Конечно, все работает нормально, но я не совсем понимаю, почему альфа, сдвинутая на 24, является последней, а не первой (так что это будет в хорошем порядке 24, 16, 8). Я не очень разбираюсь в побитовых операциях. Кроме того, этот фрагмент кода работает для 4 байтов, что для меня избыточно, мне нужно всего три байта, и мне интересно, если Long по-прежнему требуется, когда байтов всего три, разве Integer не подойдет в этом случае?
Итак, мой вопрос: как мне переписать этот код для работы только с 3 параметрами? Нужно ли использовать Long? И, я знаю, что это глупо, но возможно ли сделать сдвиг байтов в порядке 16,8,0 вместо 16,8,0,24? Это действительно просто эстетика, но я ужасный перфекционист.
Заранее спасибо!
Aaron