【问题标题】:Encode string into decimal digits - javascript将字符串编码为十进制数字 - javascript
【发布时间】:2023-03-08 15:45:01
【问题描述】:

有没有办法将常规 javascript utf-8 字符串编码为十进制 0-9(或八进制 0-7,如果这样更方便)(八进制或 base10)?

我看到了这个 php 的线程,我想要类似的 javascript。

Encoding byte data into digits

【问题讨论】:

    标签: javascript encoding


    【解决方案1】:

    不确定您为什么要这样做,但根据您的需要,这很容易。 JavaScript 的 String.prototype.charCodeAt() 返回字符串中字符的数字 Unicode 值,最高可达 65,536(假设您没有使用 > 0x10000 的 unicode 代码点;如果是,consult the String.prototype.charCodeAt documentation)。

    很有可能,您使用的是 ASCII,这意味着您的数字字符代码最多为 255,这意味着您可以使用三位数。所以首先我们需要一个函数来填充零:

    function zeroPad(n, w){
        while(n.toString().length<w) n = '0' + n;
        return n;
    }
    

    然后我们可以创建一个函数来将你的字符串转换为一串数字:

    function toNumbers(s){
        var nums = '';
        for(var i=0; i<s.length; i++) {
            nums += zeroPad(s.charCodeAt(i), 3);
        }
        return nums;
    }
    

    然后是要解码的函数:

    function fromNumbers(nums){
        var s = '';
        for(var i=0; i<nums.length; i+=3){
            console.log(i + ': ' + nums.substring(i, i+3))
            s += String.fromCharCode(nums.substring(i, i+3));
        }
        return s;
    }
    

    【讨论】:

    • 我想对查询字符串进行编码,使其看起来像 id hash。喜欢重写的链接。
    • Encoding != hash,所以我希望您不要出于安全目的使用它!
    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多