Подтвердить что ты не робот

Char в Hex в javascript

Может ли кто-нибудь помочь мне преобразовать char в hex в javascript?

Например:

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

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

Этот сайт делает это

Однако я не могу понять это.

Любое предложение.

Спасибо, Sarbbottam

4b9b3361

Ответ 1

Вы можете прокручивать символы и использовать функцию 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;
}

Позвольте сломать его.

  • string_as_unicode_escape принимает один аргумент, input, который является строкой.
  • pad_four - это внутренняя функция, которая делает одну вещь; он накладывает строки с ведущими символами '0', пока длина не будет не менее четырех символов.
  • Начните с определения output как пустой строки.
  • Для каждого символа в строке добавьте \u в строку output. Возьмите значение UTF-16 символа с помощью input.charCodeAt(i), а затем преобразуйте его в шестнадцатеричную строку с .toString(16), затем поместите его с ведущими нулями, затем добавьте результат в строку output.
  • Верните строку output.

Как прокомментировал Tim Down, мы можем добавить 0x10000 к значению charCodeAt, а затем .slice(1) строку, вызванную вызовом .toString(16), для достижения эффекта заполнения.

Ответ 2

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

Ответ 3

var hex = new Array ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' а", 'б', 'с', 'd', 'е', 'е');

    function stringEncode()
    {
        var x=document.getElementById("from_text");


        var preescape="" + x.value;
        var escaped="";

        var i=0;
        for(i=0;i<preescape.length;i++)
        {
            escaped=escaped+encodeChar(preescape.charAt(i));
        }

        //x=document.getElementById("to_text");

                    x.value=escaped;
        //alert("Codigo: "+escapeHtml(escaped));
        //document.getElementById('string_example').innerHTML="<b>String example with text</b><br/><br/>String s=\""+escapeHtml(escaped)+"\";<br/><br/>";
    }


    function escapeHtml(unsafe) {
       return unsafe
                .replace(/&/g, "&amp;")
                .replace(/</g, "&lt;")
                .replace(/>/g, "&gt;")
                .replace(/"/g, "&quot;")
                .replace(/'/g, "&#039;");
            }

            function encodeChar(original)
            {
                    var found=true;
                    var thecharchar=original.charAt(0);
                    var thechar=original.charCodeAt(0);
                    switch(thecharchar) {
                                    case '\n': return "\\n"; break; //newline
                                    case '\r': return "\\r"; break; //Carriage return
                                    case '\'': return "\\'"; break;
                                    case '"': return "\\\""; break;
                                    case '\\': return "\\\\"; break;
                                    case '\t': return "\\t"; break;
                                    case '\b': return "\\b"; break;
                                    case '\f': return "\\f"; break;

                                    default:
                                            found=false;
                                            break;
                            }
                            if(!found)
                            {
                                    if(thechar>127) {
                                            var c=thechar;
                                            var a4=c%16;
                                            c=Math.floor(c/16); 
                                            var a3=c%16;
                                            c=Math.floor(c/16);
                                            var a2=c%16;
                                            c=Math.floor(c/16);
                                            var a1=c%16;
                                    //  alert(a1);
                                            return "\\u"+hex[a1]+hex[a2]+hex[a3]+hex[a4]+"";        
                                    }
                                    else
                                    {
                                            return original;
                                    }
                            }


            }

//------------------------ lo llamarias con