繁体   English   中英

如何使用 JavaScript for loop 将 ASCII 码转换为单词

[英]How can I convert ASCII code to a word using JavaScript for loop

希望解决以下代码以便为以下数组提供名称

 let name=[42,67,74,62,6A,1F,58,64,60,66,64,71];
 for(let i=0;i<name.length;i++)
 {
 name[i] =name[i]+1;
 }

有什么建议 output 是什么?

谢谢

您的初始数组不是有效数组,因为6A1F不是 JavaScript 中的有效数字。 此外,如果数组中的所有数字都是十六进制数字,则需要在它们前面加上0x才能正确运行(因为 base10 数字 42 与 base16 数字 42 不同)。 所以让我们先把你的数组整理好:

let name = [0x42,0x67,0x74,0x62,0x6A,0x1F,0x58,0x64,0x60,0x66,0x64,0x71];

我们也可以使用字符串并将它们解析为 base16(十六进制)数字:

let name = ['42','67','74','62','6A','1F','58','64','60','66','64','71'].map(n => parseInt(n, 16));

现在我们可以使用String.fromCharCode来确定数组的内容:

name.map(String.fromCharCode).join('')

虽然我不确定那是什么意思或意思...

因为我们不知道数字代表哪个基数,并且十六进制的 output 没有说明任何内容,所以我们尝试从 2 到 30 的基数,并检查 output 是否有效。

注意:要删除所有不可打印的 ASCII 字符,我们使用正则表达式

/[^ -~]+/g

这里有很多在线解码器工具,例如https://geocaching.dennistreysa.de/multisolver/ ,而不是使用 JavaScript 。在那里您可以输入您的输入并按解码,它会以多种方式解码。 这将比使用 JavaScript 更方便地从输入中获取单词。

 let name = ['42','67','74','62','6A','1F','58','64','60','66','64','71']; const ob = {}; for(let i = 2; i <= 30; i++){ let temp = name.map(x => parseInt(x, i)); // Remove the non printable ASCII Characters let tempRes = String.fromCharCode(...temp).replace(/[^ -~]+/g, ""); ob[`Base${i}`] = tempRes; } console.log(ob);

你想要这个吗?

 let name = [42,67,74,62,0x6A,0x1F,58,64,60,66,64,71]; var str = ""; for(let i=0;i<name.length;i++) { str+=String.fromCharCode(name[i]); } console.log(str);

甚至:

 let name = [42,67,74,62,0x6A,0x1F,58,64,60,66,64,71]; console.log(String.fromCharCode(...name));

*注意您的值是十六进制的,您应该通过添加0x来指定它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM