javascript中的字符到十六进制

use*_*818 18 javascript hex char

任何人都可以指导我如何在javascript中将char转换为十六进制?

例如:

"入力されたデータは范囲外です."

"\ u5165\u529B\u3055\u305F\u30C7\u30FC\u30BF\u306F\u7BC4\u56F2\u5916\u3067\u3059\u3002"

这个网站做到了

但是我无法弄明白.

任何建议.

谢谢,Sarbbottam

Del*_*ani 28

您可以循环遍历字符并使用该charCodeAt函数获取其UTF-16值,然后使用它们构造字符串.

以下是我构建的一些代码,它比您链接的网站上的代码要好得多,应该更容易理解:

function string_as_unicode_escape(input) {
    function pad_four(input) {
        var l = input.length;
        if (l == 0) return '0000';
        if (l == 1) return '000' + input;
        if (l == 2) return '00' + input;
        if (l == 3) return '0' + input;
        return input;
    }
    var output = '';
    for (var i = 0, l = input.length; i < l; i++)
        output += '\\u' + pad_four(input.charCodeAt(i).toString(16));
    return output;
}
Run Code Online (Sandbox Code Playgroud)

让我们分解吧.

  1. string_as_unicode_escape接受一个参数,input这是一个字符串.
  2. pad_four是一个内部功能,做一件事; 它使用前导'0'字符填充字符串,直到长度至少为四个字符.
  3. 首先定义output为空字符串.
  4. 对于字符串中的每个字符,请附加\uoutput字符串.取字符的UTF-16值input.charCodeAt(i),然后将其转换为十六进制字符串.toString(16),然后用前导零填充它,然后将结果附加到output字符串.
  5. 返回output字符串.

作为添下的评论中,我们还可以添加0x10000charCodeAt值,然后.slice(1)从调用产生的字符串.toString(16),来达到填充的效果.

  • 您可以使用以下技巧丢失填充代码:`output + ='\\ u'+(input.charCodeAt(i)+ 0x10000).toString(16).slice(1);` (5认同)

Dre*_*rew 5

function string_as_unicode_escape(str){
    return str.split("").map(function(s){
        return "\\u"+("0000" + s.charCodeAt(0).toString(16)).slice(-4);
    }).join("");
}
Run Code Online (Sandbox Code Playgroud)