将字符串编码为十进制数字 - javascript

时间:2014-02-06 21:00:20

标签: javascript encoding

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

我在php中看到了这个帖子,我想要类似于javascript。

Encoding byte data into digits

1 个答案:

答案 0 :(得分:3)

不确定为什么要完全这样做,但根据您的需要,这很容易。 JavaScript的String.prototype.charCodeAt()返回字符串中字符的数字Unicode值,最多可达65,536(假设您没有使用unicode代码点> 0x10000;如果是,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;
}