【问题标题】:Java Color integer to RGB string in JavaScriptJava颜色整数到JavaScript中的RGB字符串
【发布时间】:2025-11-28 00:55:02
【问题描述】:

我正在尝试在 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 应该是橙色的,但它是蓝色的

正确的颜色:

这是我使用当前代码在 JS 中得到的

这是怎么回事??我知道它应该是 RGB,而不是 HSV,所以不是这样......

【问题讨论】:

标签: javascript java colors rgb


【解决方案1】:

您需要处理有符号整数。见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);
}

【讨论】:

  • 谢谢!!!这比我尝试做的要容易得多...我最终尝试从 FFFFFF 或 FFFFFFFF 中减去颜色,转换为十进制,这给了我大部分正确的颜色,但有些需要前导零和一些尾随...这更简单......
  • return "#"+ ('000000' + ((number)>>>0).toString(16)).slice(-6); 效果更好。
  • -41121 和 -41635 都为我转到#ff5b5b。这应该发生吗?