String.fromCharCode (72) da H. ¿Cómo obtener el número 72 de char H?
'H'.charCodeAt(0)
-
Hola, gracias por la solución. ¿Funcionará solo con palabras en inglés? cuando traté de encontrar el código char para una palabra tamil no funciona correctamente. Si uso String.fromCharCode(2974); devuelve el carácter ‘ஞ’, de la misma manera, si uso ‘ஞ’.charCodeAt(0) obtengo 38, y eso es para ‘&’, ¿por qué es así?
– Shanish
24 de febrero de 2014 a las 6:00
-
@shanish: ¿Qué obtienes si escribes?
String.fromCharCode(2974).charCodeAt(0)
? (Funciona para mí). Quizás su editor y/o archivo fuente no sean compatibles con Unicode.– Carreras de ligereza en órbita
12 de agosto de 2014 a las 16:36
Utilice charCodeAt:
var str="H";
var charcode = str.charCodeAt(0);
La respuesta de @Silvio solo es cierta para puntos de código de hasta 0xFFFF (que al final es el máximo que puede generar String.fromCharCode). No siempre se puede asumir que la longitud de un carácter es uno:
'𐌰'.length
-> 2
Aquí hay algo que funciona:
var utf16ToDig = function(s) {
var length = s.length;
var index = -1;
var result = "";
var hex;
while (++index < length) {
hex = s.charCodeAt(index).toString(16).toUpperCase();
result += ('0000' + hex).slice(-4);
}
return parseInt(result, 16);
}
Usándolo:
utf16ToDig('𐌰').toString(16)
-> "d800df30"
(Inspiración de https://mothereff.in/utf-8)
David Refoua
Puede definir sus propias funciones globales como esta:
function CHR(ord)
{
return String.fromCharCode(ord);
}
function ORD(chr)
{
return chr.charCodeAt(0);
}
Entonces úsalos así:
var mySTR = CHR(72);
o
var myNUM = ORD('H');
(Si desea usarlos más de una vez y/o mucho en su código).
Gunar Gessner
String.fromCharCode
acepta múltiples argumentos, por lo que esto es válido:
const binaryArray = [10, 24] // ...
str = String.fromCharCode(...binaryArray)
En caso de que estés buscando el opuesto a eso (como yo), esto podría ser útil:
const binaryArray = str
.split('')
.reduce((acc, next) =>
[...acc, next.charCodeAt(0)],
[]
)
Si tiene que considerar la codificación, tenga en cuenta que el charCodeAt
método de String
El objeto tendrá por defecto la codificación utf16. Puedes usar el string_decoder
objeto y el parámetro de codificación del Nodo.js Buffer
objeto para aplicar una codificación específica.
los charCodeAt
El método proporciona solo codificación ascii/utf-16 incluso con codificación utf-8 String
objeto :
str=new String(new Buffer([195,169]))
// -> [String: 'é']
str.charCodeAt(0)
// -> 233
Construyendo la cadena con fromCharCode
no estaría bien como se espera UTF-16 :
myStr=String.fromCharCode(50089, 65, 233)
// -> '쎩Aé'
Buffer.from(myStr, 'utf-8')
// -> <Buffer ec 8e a9 41 c3 a9>
Buffer.from(myStr, 'ascii')
// -> <Buffer a9 41 e9>
myStr.charCodeAt(0)
// -> 50089
myStr.charCodeAt(2)
// -> 233
Aquí hay un ejemplo simple para codificar y decodificar bytes UTF8 y bytes ASCII:
var dec=new string_decoder.StringDecoder('utf-8');
dec.write(Buffer.from([65,67,195,169,98]));
// -> 'ACéb'
var theBytes=new Buffer('aéé','utf-8');
// -> <Buffer 61 c3 a9 c3 a9>
var dec=new string_decoder.StringDecoder('ascii')
dec.write(Buffer.from([65,67,195,169,98]))
// -> 'ACC)b'
var theBytes=new Buffer('aéé','ascii')
// -> <Buffer 61 e9 e9>
los StringDecoder.write
método le devolverá un String
objeto del búfer de bytes proporcionado.
El parámetro de codificación del Buffer
objeto le da una manera de obtener un Buffer
feed de objetos con los bytes codificados de una cadena proporcionada.
Entonces, para obtener la codificación ASCII de char ‘H’:
new Buffer('H','ascii');
// -> <Buffer 48>
new Buffer('H','ascii')[0];
// -> 72
De esa manera, también podría manejar caracteres codificados de varios bytes como ese:
new Buffer('é','ascii');
// -> <Buffer e9>
arr=new Buffer('é','ascii');
// -> <Buffer e9>
code=arr.readUIntBE(0,arr.length);
// -> 233
code.toString(16);
// -> 'e9'
new Buffer('é','utf-8');
// -> <Buffer c3 a9>
arr=new Buffer('é','utf-8');
// -> <Buffer c3 a9>
code=arr.readUIntBE(0,arr.length);
// -> 50089
code.toString(16)
// -> 'c3a9'
el código en la pregunta es para lo que vine aquí, no la respuesta. ¡Gracias!
– B”H Bi’ezras — Boruj Hashem
31 de enero de 2020 a las 2:20