2013-07-30 22 views

Trả lời

11

Để đảo ngược nó, bạn chỉ cần kết hợp các byte thành một số nguyên. Chỉ cần sử dụng dịch chuyển trái và thêm chúng, và nó sẽ hoạt động.

var rgb = (red << 24) + (green << 16) + (blue << 8) + (alpha); 

Ngoài ra, để làm cho nó an toàn hơn, bạn có thể đầu tiên và mỗi người trong số họ với 0xFF:

var r = red & 0xFF; 
var g = green & 0xFF; 
var b = blue & 0xFF; 
var a = alpha & 0xFF; 

var rgb = (r << 24) + (g << 16) + (b << 8) + (a); 

(Bạn có thể sử dụng bitwise OR | thay vì + đây, kết quả sẽ giống nhau).

+0

Điều đó thực sự hiệu quả. Tôi nghĩ rằng nó không phải vì giá trị đầu vào không giống như giá trị đầu ra. Vẫn không được. Không biết những gì thêm bit được lưu trữ trong đó, nhưng tôi đoán họ không quan trọng. – skerit

+0

Hãy nhớ rằng điều này không làm việc với r/g/b/a là số nguyên. Người ta phải đúc chúng một cách rõ ràng thành byte trước khi thêm chúng lại với nhau. – lunatix