2015-08-16 3 views
1

Если у меня есть случайная строка и вы хотите ее закодировать в другую строку, содержащую только буквенно-цифровые символы, что является наиболее эффективным способом сделать это в JavaScript/NodeJS?Кодировка в алфавитно-цифровом формате в JavaScript

Очевидно, что при необходимости необходимо преобразовать выходную строку обратно в исходную строку ввода.

Спасибо!

+0

Что будет ваша входная строка выглядит? Также, что вы подразумеваете под 'only содержит буквенно-цифровые символы?? Строка ввода содержит не буквенно-цифровые символы? – arunatebel

+0

Да, строка ввода может содержать любой символ, а выходная строка должна содержать только буквенно-цифровые символы. – Pensierinmusica

+0

Какова ваша цель для преобразования строк? –

ответ

4

Для кодирования в алфавитно-цифровой строке вы должны использовать буквенно-цифровую кодировку. Некоторые популярные включают шестнадцатеричные (base16), base32, base 36, base58 и base62. Альтернативы hexadecimal используются, потому что больший алфавит приводит к коротким закодированным строкам. Вот некоторые данные:

  • Hexadecimal популярен, потому что он очень распространен.
  • Base32 и Base36 полезны для кодирования без учета регистра. Base32 более читабельна для людей, потому что он удаляет некоторые простые письма. Base32 используется в играх и для лицензионных ключей.
  • Base58 и Base62 полезны для кодирования с учетом регистра. Base58 также разработан, чтобы быть более читаемым человеком, удаляя несколько простых писем. Base58 используется Flickr, Bitcoin и другими.

В NodeJS шестнадцатеричной кодировке является natively supported, и может быть сделано следующим образом:

// Encode 
var hex = new Buffer(string).toString('hex'); 

// Decode 
var string = new Buffer(hex, 'hex').toString(); 

Важно отметить, что существуют различные реализации некоторых из них. Например, Flickr и Bitcoin используют различные реализации Base58.

+0

Спасибо @Grokify! Какой кодировщик среди тех, кого вы упомянули, является наиболее эффективным (самым быстрым) и поддерживается в JavaScript? – Pensierinmusica

+0

Шестнадцатеричный, как правило, самый результативный, поскольку он реализуется изначально. Реализация JS в связанном SO-ответе выглядит очень прямолинейно, поэтому я бы попробовал это и посмотрел, достаточно ли он для вас. Base32/36/58/62 хороши, если вам нужна короткая кодированная строка. – Grokify

+0

Привет, Grokify, когда вы говорите, что «шестнадцатеричный является изначально реализован», к каким родным методам JS вы точно относитесь к кодировке и расшифровке из hex? – Pensierinmusica

-2

Почему бы не просто сохранить 2 строки в разных переменных, поэтому не нужно переводить обратно?

Чтобы извлечь все буквы, цифры, вы можете использовать функцию регулярных выражений, как так:

var str='dssldjf348902.-/dsfkjl'; 
var patt=/[^\w\d]*/g; 
var str2 = str.replace(patt,''); 

str2 становится dssldjf348902dsfkjl

+1

Привет @Trung, то, что вы предлагаете, не кодируется, заменяется. Поэтому он не отвечает на вопрос. – Pensierinmusica

Смежные вопросы