substr 到子字符串的正确转换

Chr*_*ian 3 javascript

我在这里找到了一些旧代码来生成调色板。这包括以下功能:

function byte2Hex(n)
  {
    var nybHexString = "0123456789ABCDEF";
    return String(nybHexString.substr((n >> 4) & 0x0F,1)) + nybHexString.substr(n & 0x0F,1);
  }
Run Code Online (Sandbox Code Playgroud)

我认为这是一个简单的方法,因为我只需要用子字符串替换 substr,但它不起作用。

axi*_*iac 8

String.substr()String.substring()接受两个参数,虽然第一个参数具有相同的语义(要提取的第一个字符的索引),但第二个参数具有不同的含义。

因为substr()它代表要提取的字符数,但因为substring()它代表要提取的子字符串之后的第一个字符的索引。基本上,s.substr(a, b)与 相同s.substring(a, a+b)

你的代码变成:

function byte2Hex(n)
{
  const nybHexString = "0123456789ABCDEF";
  const s1 = (n >> 4) & 0x0F;
  const s2 = n & 0x0F;

  return nybHexString.substring(s1, s1 + 1) + nybHexString.substring(s2, s2 + 1);
}
Run Code Online (Sandbox Code Playgroud)

String.substr()阅读和的文档String.substring()