【发布时间】:2023-03-08 15:45:01
【问题描述】:
有没有办法将常规 javascript utf-8 字符串编码为十进制 0-9(或八进制 0-7,如果这样更方便)(八进制或 base10)?
我看到了这个 php 的线程,我想要类似的 javascript。
【问题讨论】:
标签: javascript encoding
有没有办法将常规 javascript utf-8 字符串编码为十进制 0-9(或八进制 0-7,如果这样更方便)(八进制或 base10)?
我看到了这个 php 的线程,我想要类似的 javascript。
【问题讨论】:
标签: javascript encoding
不确定您为什么要这样做,但根据您的需要,这很容易。 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;
}
【讨论】: