Javascript - 如何将十六进制值用作数组键?

时间:2015-01-24 22:51:26

标签: javascript arrays key hex

问题
只有10到10的十六进制值才有效。我不能将00到0f分配为键;他们似乎从中掉了下来。我的理解是这些值需要引用才能工作,但事实似乎并非如此。我甚至读过这个article并没有帮助。 如何将这些HEX值指定为数组键?

背景
我要做的是创建一个替换数组,该数组包含将用于替换其他HEX值的HEX值。混乱?让我告诉你:

此HEX字符串进入(文本已更改为HEX):2a2b

我的目标是使用替换数组将其更改为另一个十六进制字符串,如下所示:1fa9

我能想到的最快的方法是将HEX值分配给数组键,这样我就可以查找与十六进制值匹配的键,并立即替换它的值,如下所示:

// I'm working with chunks of 25 fyi
for (var i = 0; i < 25; i++) {
  dataChunck[i] = substitueArray[dataChunck[i]];
}

我的其余代码
这已被削减到你需要的。 hexValues是HEX值00到ff的数组。

// Start at array index 1 because be defined and saved 0 already
for (var x = 1; x < 256; x++) {
  if (counter > 255) {
    break; // We now have all 256 HEX values, stop
  }
  // We want to allow 256 as an option so go 1 higher (257)
  if (sub > 0 && sub < 257) {
    // If the number (HEX value) is not already saved save it
    if (sboxValues.indexOf(hexValues[sub - 1]) < 0) {
      // RIGHT HERE IS THE PROBLEM!!!
      // This assigns a HEX value as the key and saves sub to it
      // sub as you can see gets converted to HEX as its saved
      sboxValues[hexValues[x]] = hexValues[sub - 1];
      counter++;
    } else {
      // Glitch: That number has been saved, redo this round
      // Keep x on track so we don't accidently reuse it
      x--;
    }
    sub += num; // Move on to new number
  } else {
    // Removed. You don't need to see this code
    // Keeps x on track so we don't accidently reuse it
  }
}

1 个答案:

答案 0 :(得分:2)

您要做的是在数组中使用字符串键。这是不可能的。

你可以做的是使用普通对象作为地图(而不是数组),或者只是将想要用作键的十六进制字符串转换为带有parseInt的十进制表示,例如:< / p>

sboxValues[parseInt(hexValues[x], 16)] = hexValues[sub - 1];