Char в Hex в javascript
Может ли кто-нибудь помочь мне преобразовать char в hex в javascript?
Например:
"入 力 さ れ た デ ー タ は 範 囲 外 で す."
"\ u5165\u529B\u3055\u308C\u305F\u30C7\u30FC\u30BF\u306F\u7BC4\u56F2\u5916\u3067\u3059\u3002"
Этот сайт делает это
Однако я не могу понять это.
Любое предложение.
Спасибо, Sarbbottam
Ответы
Ответ 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, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
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