Строка Javascript в массив int - PullRequest
3 голосов
/ 10 февраля 2011
var result ="1fg";
for(i =0; i < result.length; i++){
  var chr = result.charAt(i);
  var hexval = chr.charCodeAt(chr)
  document.write(hexval + " ");
}

Это дает NaN 102 103.

Вероятно, потому что он рассматривает "1" как целое число или что-то в этом роде.Есть ли способ, которым я могу преобразовать строку "1" -> в правильное целое число?В этом случае: 49.

Так будет

49 102 103 вместо NaN 102 103

Ура,

Тимо

1 Ответ

7 голосов
/ 10 февраля 2011

Функция charCodeAt принимает индекс, а не строку.

Когда вы передаете ей строку, она будет пытаться преобразовать строку в число и использовать 0, если это не удалось.

Ваша первая итерация вызывает '1'.charCodeAt('1'). Он проанализирует '1' как число и попытается получить второй символьный код в строке. Поскольку строка содержит только один символ, это NaN.

Ваша вторая итерация вызывает 'f'.charCodeAt('f'). Поскольку 'f' не может быть проанализирован как число, оно будет интерпретировано как 0, что даст вам код первого символа.


Вы должны написать var hexval = result.charCodeAt(i), чтобы получить код символа в заданной позиции в исходной строке.

Вы также можете написать var hexval = chr.charCodeAt(0), чтобы получить код символа одного символа в строке chr.

...