首先,我不确定ASCII是什么(我用Google搜索但没有理解运气),无论如何我正在为学习者解决练习并遇到了这个问题,答案是以下代码。
我发现在此代码中很难理解的语句和概念如下:
For循环的2次初始化var n = 0, l = str.length
的目的是什么?
什么是charCodeAt(n)
我学会了它的unicode,但这对于这个函数是什么以及如何与charCodeAt相关以及两者如何与十六进制到ASCII转换相关?
为什么.toString()
的值为16。
在我看来,它必须使用十六进制,因此16,但它如何将十六进制转换为ASCII?
function ascii_to_hexa(str)
{
var arr1 = [];
for (var n = 0, l = str.length; n < l; n ++)
{
var hex = Number(str.charCodeAt(n)).toString(16);
arr1.push(hex);
}
return arr1.join('');
}
答案 0 :(得分:0)
var n = 0, l = str.length; n < l; n ++
当n
小于字符串长度时执行循环 - 基本上,循环遍历字符串中的每个字符。当你到达字符串的末尾时,停止循环。
n
是字符串中的字符,其中循环位于(1,2,3,...),因此是要转换的字符。
16是计算字符值时使用的数字基数。它被称为基数。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString
答案 1 :(得分:0)
for循环的2个inizialtions(var n = 0,l = str.length)的目的是什么?
变量l
只是存储str.length
的值。您可以改为编写for (var n = 0; n < str.length; n ++)
,也可以有效。
什么是charCodeAt(n),我学会了它的unicode,但这对于这个函数是什么以及如何与charCodeAt相关以及两者如何与十六进制到ASCII转换相关?
charCodeAt
您可以自己阅读,文档中有详细说明:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
为什么.toString()赋值为16,在我看来,它必须与hexa 16,但是如何将十六进制转换为ASCII?
toString()
有一个基数参数,指定要使用的基数。这告诉它使用base 16。