我正在尝试在Javascript中使用数据库中的一些Java Color int值。使用Javascript将Java颜色int(如-2147473665)转换为RGB字符串(如'#ffff00')的正确方法是什么?
现在我正在拿数字,将其翻转为负数,将其转换为十六进制,并添加一个标签,但这给了我错误的颜色。 (子字符串用于说明alpha通道)
function getClients() {
var query = new Parse.Query(Client);
query.each(function(client) {
var clientName = client.get("clientName");
var borderColor = '#' + (-client.get("borderColor")).toString(16);
var fillColor = '#' + (-client.get("fillColor")).toString(16).substr(2);
var outline = client.get("outline");
console.log(client.get("borderColor"));
console.log(client.get("borderColor").toString(16));
console.log(hexToRGB(client.get("borderColor")));
var clientPoly = new google.maps.Polygon({
paths: outline,
strokeColor: borderColor,
strokeOpacity: 1,
strokeWeight: 2,
fillColor: fillColor,
fillOpacity: 0.5
});
clientPoly.setMap(mMap);
});
}
例如,int -16767233应该是深蓝色,但它显示为黄色。
-16731137应该是浅蓝色,但它是红色的
-1218518应为橙色,但它是蓝色
这里发生了什么?我知道它应该是RGB,而不是HSV,所以不是它......
答案 0 :(得分:12)
您需要处理有符号整数。见How to convert decimal to hex in JavaScript?
console.log(getHexColor(-16731137)); // light blue
console.log(getHexColor(-1218518)); // orange
function getHexColor(number){
return "#"+((number)>>>0).toString(16).slice(-6);
}