有没有办法将常规javascript utf-8字符串编码为十进制0-9(如果更方便,则为八进制0-7)(八进制或base10)?
我在php中看到了这个帖子,我想要类似于javascript。
答案 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;
}