javascript - 用js将十六进制颜色转换为int32值
问题描述
现在,我需要知道如何将十六进制中的任何值更改
'#01ff00', '#7fff82', '#c1ffc0', '#16F6F5','#81FFFC','#BFFFFF'
为 int32(必须)
function toColor(num) {
num >>>= 0;
var b = num & 0xFF,
g = (num & 0xFF00) >>> 8,
r = (num & 0xFF0000) >>> 16,
a = ( (num & 0xFF000000) >>> 24 ) / 255 ;
return "rgba(" + [r, g, b, a].join(",") + ")";
}
我使用了这个公式,但我不知道如何应用逆向工程。
编辑:
我在数据库中有这个值:-16744448,使用公式我有这个颜色值:'#008000',我需要在 -16744448 中再次转换这个颜色。
当我使用评论中提到的公式时,我得到:32768
这个值来自VB.net,这个函数:Color.FromArgb
解决方案
我们正在删除“#”,将十六进制解析为十进制,补足 16^6。
Back:
不补码,以前导零填充十六进制字符串,修剪到最后 6,在开头添加“#”。
var values=["#008000",'#01ff00', '#7fff82', '#c1ffc0', '#16F6F5','#81FFFC','#BFFFFF'];
values.forEach(v=>{
var r=parseInt(v.slice(-6),16)-Math.pow(16,6);
var rr="#"+("0".repeat(6)+(Math.pow(16,6)+r).toString(16)).slice(-6);
console.log(v,r,rr);
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- drawrect - iOS:文本在 drawRect 函数中颠倒
- python - Matplotlib 多个子图图形间距按要求
- javascript - 无法从导入模块的类型文件中解析打字稿类,但可以使用绝对路径
- android - 如何将振动动画和设备振动设置为edittext?
- list - 在 Python 中转换为范围
- sql - 在 SQL Server 中加密列上的运算符搜索
- unity3d - GetAxis 不工作(没有感应到我的输入?)
- javascript - 在Angular 5中将数据读/写到文件(文本文件)中
- vue.js - vue.js 中的路由错误 - 访问 XMLHttpRequest
- javascript - 使用 tabindex="0" 会对其他元素产生影响