如何在JavaScript中根据一组特定位数的整数生成固定长度的代码

兰斯·波拉德

在JavaScript中从具有任意基数的整数生成字符串会收到以下答案:

function parseInt(value, code) {
    return [...value].reduce((r, a) => r * code.length + code.indexOf(a), 0);
}

function toString(value, code) {
    var digit,
        radix= code.length,
        result = '';

    do {
        digit = value % radix;
        result = code[digit] + result;
        value = Math.floor(value / radix);
    } while (value)

    return result;
}

console.log(parseInt('dj', 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
console.log(toString(123, 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
console.log(parseInt('a', 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
console.log(toString(0, 'abcdefghijklmnopqrstuvwxyz0123456789+-'));

我对有些不同感兴趣。尽管这将生成该数字的最短代码,但我现在想根据位数来生成一个恒定长度的代码我不确定这是否也是一个复杂的基数解决方案。

假设我想使用16个字符的字母生成8位代码。这意味着我应该能够使用前4位选择一个字符,然后使用后4位选择第二个字符。因此,MV如果我的16个字符集是,我可能最终会遇到ABDHNMOPQRSTUVYZ同样,如果我有16位范围,我将有4个字符代码,而32位范围将是8个字符代码。因此,调用code32(1, 'ABDHNMOPQRSTUVYZ')将给出8个字母代码,而code8(1, 'ABDHNMOPQRSTUVYZ')给出2个数字代码。

用JavaScript如何实现呢?遵循这些原则?

 code8(i, alpha) // 0 to 255 it accepts
 code16(i, alpha) // 0 to 65535 it accepts
 code32(i, alpha) // 0 to 2^32-1 it accepts

同样,如何将字符串代码恢复为原始数字(或位序列)?

亭子

这实际上归结为更改,toString以便:

  • 它仅接受长度为2的幂的代码
  • 它将结果填充到给定数量的“数字”(字符)

您将用于16位数字的实际位数取决于代码的大小。如果代码包含16个字符,则它可以覆盖4位,因此需要输出4个字符。但是,如果代码包含4个字符,则输出将需要8个字符。您可能会遇到不完全匹配的情况,例如您的代码包含8个字符。然后输出将需要6个字符。

在这里,我重点介绍了该toString方法的更改我个人的喜好也是将值作为最后一个参数toString

function toString(digitCount, code, value) { // <-- add argument digitCount
    // Perform a sanity check: code must have a length that is power of 2
    if (Math.log2(code.length) % 1) throw "code size not power of 2: " + code.length;
    var digit,
        radix = code.length,
        result = '';

    do {
        digit = value % radix;
        result = code[digit] + result;
        value = Math.floor(value / radix);
    } while (value)

    return result.padStart(digitCount, code[0]); // Pad to the desired output size
}

console.log(toString(4, 'abcdefghijklmnop',    123));
console.log(toString(4, 'abcdefghijklmnop',      0));
console.log(toString(4, 'abcdefghijklmnop', 0xFFFF));

// You could define some more specific functions

const code8 = (code, value) => toString(Math.ceil(8 / Math.log2(code.length)), code, value);
const code16 = (code, value) => toString(Math.ceil(16 / Math.log2(code.length)), code, value);  

console.log(code16('abcdefghijklmnop',    123));
console.log(code16('abcdefghijklmnop',      0));
console.log(code16('abcdefghijklmnop', 0xFFFF));

console.log(code8('abcdefghijklmnop',  123));
console.log(code8('abcdefghijklmnop',    0));
console.log(code8('abcdefghijklmnop', 0xFF));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以使用给定的一组数字生成的固定长度的不同序列数

来自分类Dev

读取非固定长度组中的特定json元素

来自分类常见问题

如何使用JavaScript生成固定长度的随机数?

来自分类Dev

如何使用Gremlin在一组N个顶点中包含的对中找到特定长度的所有路径

来自分类Dev

在固定长度文件的特定位置替换特定行中的字符串

来自分类Dev

如何在 Ocaml 中为一组布尔变量生成一组值

来自分类Dev

如何根据R中的特定长度设置名称

来自分类Dev

我应该如何在typedef中定义一组位数?

来自分类Dev

在 bash 中,我想根据一组单词为每个单词生成一组固定的 4 个字符输出并始终匹配

来自分类Dev

生成具有固定位数长度的随机数?

来自分类Dev

如何在Stan模型中定义一组不同长度的向量

来自分类Dev

如何在JavaScript / React中以一定长度的块显示节

来自分类Dev

Javascript,将字符串切成一定长度,但仅在特定位置

来自分类Dev

如何在dart中随机分配一组固定数字的顺序?

来自分类Dev

如何在Clojure中生成固定长度的随机密码?

来自分类Dev

如何在Go中生成固定长度的随机数?

来自分类Dev

如何在Java中生成给定RSA私钥的固定长度指数?

来自分类Dev

如何在不冲突的情况下生成固定长度的随机数?

来自分类Dev

我如何使用R中的predict根据新数据集生成一组预测?

来自分类Dev

如何在SQL中选择一组代码并代表特定的权重?

来自分类Dev

从文件中读取固定长度的整数行(bu

来自分类Dev

如何根据特定列对一组列进行 PIVOT?

来自分类Dev

如何从指定范围内生成一组随机整数,不包括matlab中的一个整数

来自分类Dev

如何在javascript中仅允许一组特定的域并在不匹配的情况下引发警报?

来自分类Dev

如何根据MySQL中的特定条件选择一组最近的记录

来自分类Dev

C中整数形式的特定位数

来自分类Dev

如何生成固定长度的数字,这些数字求和在Haskell中

来自分类Dev

如何制作固定长度的动态生成的验证码

来自分类Dev

代码优先迁移中的固定长度字符串列

Related 相关文章

  1. 1

    可以使用给定的一组数字生成的固定长度的不同序列数

  2. 2

    读取非固定长度组中的特定json元素

  3. 3

    如何使用JavaScript生成固定长度的随机数?

  4. 4

    如何使用Gremlin在一组N个顶点中包含的对中找到特定长度的所有路径

  5. 5

    在固定长度文件的特定位置替换特定行中的字符串

  6. 6

    如何在 Ocaml 中为一组布尔变量生成一组值

  7. 7

    如何根据R中的特定长度设置名称

  8. 8

    我应该如何在typedef中定义一组位数?

  9. 9

    在 bash 中,我想根据一组单词为每个单词生成一组固定的 4 个字符输出并始终匹配

  10. 10

    生成具有固定位数长度的随机数?

  11. 11

    如何在Stan模型中定义一组不同长度的向量

  12. 12

    如何在JavaScript / React中以一定长度的块显示节

  13. 13

    Javascript,将字符串切成一定长度,但仅在特定位置

  14. 14

    如何在dart中随机分配一组固定数字的顺序?

  15. 15

    如何在Clojure中生成固定长度的随机密码?

  16. 16

    如何在Go中生成固定长度的随机数?

  17. 17

    如何在Java中生成给定RSA私钥的固定长度指数?

  18. 18

    如何在不冲突的情况下生成固定长度的随机数?

  19. 19

    我如何使用R中的predict根据新数据集生成一组预测?

  20. 20

    如何在SQL中选择一组代码并代表特定的权重?

  21. 21

    从文件中读取固定长度的整数行(bu

  22. 22

    如何根据特定列对一组列进行 PIVOT?

  23. 23

    如何从指定范围内生成一组随机整数,不包括matlab中的一个整数

  24. 24

    如何在javascript中仅允许一组特定的域并在不匹配的情况下引发警报?

  25. 25

    如何根据MySQL中的特定条件选择一组最近的记录

  26. 26

    C中整数形式的特定位数

  27. 27

    如何生成固定长度的数字,这些数字求和在Haskell中

  28. 28

    如何制作固定长度的动态生成的验证码

  29. 29

    代码优先迁移中的固定长度字符串列

热门标签

归档