Итак, у меня есть 4 значения (A, R, G, B) и им пытаются сделать их в десятичной системе.отрицательное число при битрейте
public function MergeABGR(A, R, G, B)
Return (A << 24) + (R << 16) + (G << 8) + B
end function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
msgbox(MergeABGR(dim a = 255, dim r = 255, dim g = 0, dim b = 255))
End Sub
Результат: получение от этого: -65282.
я должен получать: 4294902015
Каждый знает, почему это происходит ??
Dim Decimal as Long = 4294902015
Dim outA as integer = SplitA(Decimal, OutA)
Dim outR as integer = SplitR(Decimal, OutR)
Dim outG as integer = SplitG(Decimal, OutG)
Dim outB as integer = SplitB(Decimal, OutB)
Public Function SplitR(ABGR, ByRef R)
R = ABGR And &HFF
Return R
End Function
Public Function SplitG(ABGR, ByRef G)
G = ABGR >> 8 And &HFF
Return G
End Function
Public Function SplitB(ABGR, ByRef B)
B = ABGR >> 16 And &HFF
Return B
End Function
Public Function SplitA(ABGR, ByRef A)
A = ABGR >> 24 And &HFF
Return A
End Function
После всего этого, эти результаты я получаю OUTA = 255 OUTR = 255 исх = 0 специфичны = 255
Если вы работаете с цветами, вы можете напрямую извлекать значения ARGB. – dbasnett
Поместите 'Option Strict On' в верхней части вашего кода. В ваших функциях не указываются типы возврата. –