Javascript 如何反转String.fromCharCode?
String.fromCharCode(72)给出H。如何从char H中获取数字72?使用charCodeAt:Javascript 如何反转String.fromCharCode?,javascript,char,reverse,Javascript,Char,Reverse,String.fromCharCode(72)给出H。如何从char H中获取数字72?使用charCodeAt: var str = 'H'; var charcode = str.charCodeAt(0); 您可以这样定义自己的全局函数: function CHR(ord) { return String.fromCharCode(ord); } function ORD(chr) { return chr.charCodeAt(0); } var mySTR = C
var str = 'H';
var charcode = str.charCodeAt(0);
您可以这样定义自己的全局函数:
function CHR(ord)
{
return String.fromCharCode(ord);
}
function ORD(chr)
{
return chr.charCodeAt(0);
}
var mySTR = CHR(72);
然后像这样使用它们:
function CHR(ord)
{
return String.fromCharCode(ord);
}
function ORD(chr)
{
return chr.charCodeAt(0);
}
var mySTR = CHR(72);
或
(如果您想在代码中多次使用它们和/或大量使用它们。)@Silvio的答案仅适用于0xFFFF以下的代码点(这最终是String.fromCharCode可以输出的最大值)。不能总是假定字符的长度为1:
'String.fromCharCode
accepts multiple arguments, so this is valid:
const binaryArray = [10, 24] // ...
str = String.fromCharCode(...binaryArray)
”String.fromCharCode
接受多个参数,因此这是有效的:
const binaryArray = str
.split('')
.reduce((acc, next) =>
[...acc, next.charCodeAt(0)],
[]
)
如果您正在寻找与此相反的(像我一样),这可能会派上用场:
如果您必须考虑编码,请注意<<代码> CARCODEDAT< <代码>方法> <代码> String < /Cord>对象将默认为UTF16编码。您可以使用
string\u解码器
对象和对象的编码参数应用特定编码
charCodeAt
方法仅提供ascii/utf-16编码,即使使用utf-8编码的String
对象:
str=新字符串(新缓冲区([195169]))
//->[字符串:“é”]
str.charCodeAt(0)
// -> 233
使用fromCharCode
构建字符串将不符合预期UTF-16:
myStr=String.fromCharCode(50089,65233)
// -> '쎩Aé'
Buffer.from(myStr,'utf-8')
// ->
Buffer.from(myStr,'ascii')
// ->
myStr.charCodeAt(0)
// -> 50089
myStr.charCodeAt(2)
// -> 233
下面是一个对UTF8字节和ASCII字节进行编码和解码的简单示例:
var dec=new string_decoder.StringDecoder('utf-8');
dec.write(缓冲区from([65,67195169,98]);
//->“ACéb”
var theBytes=新缓冲区('a俎é','utf-8');
// ->
var dec=new string\u decoder.StringDecoder('ascii'))
dec.write(缓冲区from([65,67195169,98]))
//->“ACC)b”
var theBytes=新缓冲区('a俎é','ascii')
// ->
StringDecoder.write
方法将从提供的字节缓冲区返回String
对象
Buffer
对象的编码参数为您提供了一种从提供的字符串中获取带有编码字节的Buffer
对象提要的方法
因此,要获得字符“H”的ASCII编码:
新缓冲区('H','ascii');
// ->
新缓冲区('H','ascii')[0];
// -> 72
这样,您还可以像这样处理多字节编码的字符:
新缓冲区('ee','ascii');
// ->
arr=新缓冲区('ee','ascii');
// ->
代码=arr.readUIntBE(0,arr.length);
// -> 233
代码.toString(16);
//->“e9”
新缓冲区('ee','utf-8');
// ->
arr=新缓冲区('é','utf-8');
// ->
代码=arr.readUIntBE(0,arr.length);
// -> 50089
代码.toString(16)
//->“c3a9”
您好,谢谢您的解决方案。它只适用于英语单词吗?当我试图找到泰米尔语单词的字符代码时,它不能正常工作。如果我使用String.fromCharCode(2974);它返回角色的名称ஞ', 同样的方法,如果我使用'ஞ'.charCodeAt(0)我得到了38,这是为了“&”,为什么是这样?@shanish:如果你写String.fromCharCode(2974)。charCodeAt(0)
,你会得到什么?(它对我有用。)也许您的编辑器和/或源文件不支持Unicode。请不要再使用我的建议。我强烈建议使用对象包装函数,而不是全局定义它们。问题中的代码是我来这里的目的,而不是答案。谢谢