【发布时间】:2015-03-23 17:56:30
【问题描述】:
问题
只有 10 到 ff 的 HEX 值有效。我不能将 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 是一个十六进制值 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
}
}
【问题讨论】:
标签: javascript arrays key hex