javascript - 在 JavaScript 中将最低有效数字移出十六进制序列

标签 javascript integer hex logical-operators

我目前正在尝试编写一些内容来调整 6 位十六进制代码中的蓝色值(它从高级范围内的对象“颜色”获取其十六进制代码)。

colors.chosen 提供的十六进制代码如果尚未设置或格式为 "#hhhhhh":则未定义:

//alter hex code value of current set colour
function hexIncrement()
{
  if (colours.chosen == undefined)
  { throw new Error("Trying to alter hex colour code in 'colours' object but this value has not yet been set"); }

  else if (!(/^\s*#\w{6}\s*$/.test(colours.chosen)))
  { throw new Error("'colours.chosen' object attribute does not translate appropriately to a hex value, meaning incorrect");  }

  let pre = colours.chosen.slice(1,5);
  let post = colours.chosen.slice(5, 7);

  post = parseInt(post, 16) + 0x11;
  console.log("added val is", post.toString(16));

  /*if the resultant number exceeds two hex digits 0xFF, then LSR 16 places (computer reads as binary representation) to eliminate extraneous digit*/
  if (post > 0xFF)
  {
    post = 16 >> post;
    console.log("Shifted hex number is: ", post);
  }

  post = post.toString(16);

  while (post.length < 2)
  {
    post += "0";
  }

  //output number in written hex format
  colours.chosen = "#" + pre.toString(16) + post.toString(16);
}

我知道这可以通过检测十六进制数字序列的长度并通过字符串切片删除最后一个数字来轻松实现,但是我希望能够以数字方式来实现。我的理想结果是简单地删除最低有效数字。

但是post = 16>>post的结果是0,这是怎么回事?

p.s:它适用于我的 js.do,但不适用于我的 Chrome 扩展脚本

最佳答案

>>移位二进制数字,因此移位 post >> 16如果您只需要删除最后一位数字,则比您想要的要多得多。您想要将下限 16,即 post >> 4 (16 == 2 ** 4)

let n = parseInt("ffee11", 16)
n = n >> 4
console.log(n.toString(16))

let n2 = 0xaabbcc
n2 = n2 >> 4
console.log(n2.toString(16))

// or divide
let n3 = 0xABFF12
let shifted = Math.floor(n3 / 16).toString(16)
console.log(shifted)

关于javascript - 在 JavaScript 中将最低有效数字移出十六进制序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51814032/

相关文章:

javascript - 继承:如何在重写的方法中模拟 super.method

c++ - 检查两个无符号整数之和是否大于 uint_max

python - TypeError : tuple indices must be integers

c++ - istream_iterator 遍历二进制文件中的字节

c# - 在 C# 中如何将十六进制字符串转换为 ASCII 值具有相同值的字符串?

javascript - 重置(撤消)添加表行操作 JQUERY

javascript - 如何在不害怕的情况下更新 JavaScript 库?

javascript - 在为 Atom 开发包时,如何写入包文件夹内的 JSON 文件?

c - C 中函数返回的整数值

Python Unicode 十六进制字符串解码