首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Android颜色转换为HEX或RGB

将Android颜色转换为HEX或RGB
EN

Stack Overflow用户
提问于 2020-05-16 20:00:30
回答 2查看 1K关注 0票数 2

我有一组数字,如429493309942837446144293898800,我想在网页中使用它们作为RGB或HEX颜色。

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

EN

Stack Overflow用户

发布于 2020-05-16 21:27:27

android.graphics.Colors采用十六进制AARRGGBB (阿尔法-红-绿-蓝)格式,转换为小数.

例如,4294933099在十六进制中是FFFF7A6B,因此它变成了rgba(255, 122, 107, 1)#FF7A6BFF

如果要使用rgba()语法,可以使用这种除法方法,避免将数字转换为十六进制:

代码语言:javascript
复制
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),则可以使用以下方法:

代码语言:javascript
复制
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倍

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61842817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档