在javascript中将ascii转换为十六进制

时间:2014-01-26 15:22:46

标签: javascript hex

我想将字符串转换为带有javascript的十六进制符号。

所以,如果我有一个字符串:

http://www.mydomain.com

转化结果为:

的http%3A%2F%2Fwww%2Emydomain%2Ecom

注意%而不是0x

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

var url = 'http://example.com';
var escaped = url.replace(/[^A-Za-z0-9]/g, function(match) {
    var hex = match.charCodeAt(0).toString(16);
    return '%' + (hex.length < 2 ? '0' + hex : hex);
});
console.log(escaped); // => "http%3a%2f%2fexample%2ecom"

[^A-Za-z0-9]表示“任何不是字母或数字的东西”(^表示不是放在字符类的开头)。

将函数传递给replace时,它会调用该函数(以匹配作为参数),而不是用静态字符串替换。

charCodeAt将获取指定字符的字符代码(通过参数),因此charCodeAt(0)将获取第一个字符的字符代码。

toString接受一个选项基本参数,指定您想要的基数,而基数16是十六进制。

最后,(hex.length < 2 ? '0' + hex : hex)将添加一个前导零,以防生成的十六进制只有一位数。