我有一组数字,如4294933099,4283744614,4293898800,我想在网页中使用它们作为RGB或HEX颜色。
我以前从未见过这种颜色格式,但谷歌会引导我找到此页,它将这些数字识别为Android android.graphics.Color,我想要的是拥有自己的JavaScript函数,将那些卑劣者转换成安全的十六进制或RGB颜色,在网页中使用。

发布于 2020-05-16 21:27:27
android.graphics.Colors采用十六进制AARRGGBB (阿尔法-红-绿-蓝)格式,转换为小数.
例如,4294933099在十六进制中是FFFF7A6B,因此它变成了rgba(255, 122, 107, 1)或#FF7A6BFF。
如果要使用rgba()语法,可以使用这种除法方法,避免将数字转换为十六进制:
function androidToRgba(color){
const colorArray = []
for(let i=0; i<4; i++){
colorArray.push(color % 256)
color>>>=8
}
const alpha = colorArray.pop() / 255
return `rgba(${colorArray.reverse()},${alpha})`
}
console.log(androidToRgba(4294933099))
console.log(androidToRgba(4283744614))
console.log(androidToRgba(4293898800))
或者,如果您想使用新的#RRGGBBAA颜色语法,或者忽略alpha并使用标准HEX (#RRGGBB),则可以使用以下方法:
function androidToHex(color){
const [, alpha, ...colorArray] = ('00000000' + color.toString(16)).slice(-8).match(/([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i)
return `#${colorArray.join('')}${alpha}`
}
console.log(androidToHex(4294933099))
console.log(androidToHex(4283744614))
console.log(androidToHex(4293898800))
虽然上述两种解决方案都能工作,但我强烈推荐以前的,因为rgba()语法比#RRGGBBAA更支持,第一个函数也是快9倍。
https://stackoverflow.com/questions/61842817
复制相似问题