Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > закодировать символ а потом вернуть обратно


Автор: Reptor 17.8.2009, 11:26
есть у меня строка например там 'C=\\:test' вот и мне надо эту строку представить в виде цифр ... а потом при ее показе снова сделать как обычную строку.. думал как то с помощью какихто кодов символа (правда не нашел подходящей функции) ну или  может есть какието готовые способы подобного действия..?? 

Автор: Michael.de 19.8.2009, 22:33
Reptor, не совсем понятно, что нужно со строкой сделать? Зашифровать что-ли?
Тогда возможно это пригодится:
Код

var str1, str2='', sdvig=2, i;
str1='C=\\:test';
for (i=0; i<str1.length; i++) str2+=String.fromCharCode(str1.charCodeAt(i)+sdvig);
alert(str2);

Автор: Reptor 20.8.2009, 14:39
Michael.de, да нужно зашифровать... ну а потом разсшифровать обратно

Добавлено @ 14:50
Michael.de, этот код подходит ... теперь обратно разшифровать надо то что зашифровали

Автор: Itsys 20.8.2009, 17:51
Надо при шифровании отвести на каждый символ три позиции и, если код символа меньше трехсимвольного, то дополнять нулями...

Автор: Itsys 20.8.2009, 18:11
например так:
Код

function add0(str){
    var ret="";
    ret = '000000'.substr(1, 5-str.length);
    return ret+str;
}
var str1, str2='', sdvig=2, i;
str1='C=\\:test';
for (i=0; i<str1.length; i++) str2+=add0("" +str1.charCodeAt(i));
alert(str2);

Автор: Michael.de 21.8.2009, 19:17
Цитата(Reptor @  20.8.2009,  14:39 Найти цитируемый пост)
теперь обратно разшифровать надо то что зашифровали
Ну так и делаешь обратную операцию - сдвигаешь каждый байт полученного текста назад (т.е. теперь отнимаешь sdvig) smile

P.S. Правда с '\' проблемы будут - каждый второй изчезнет

Автор: Reptor 25.8.2009, 12:26
Michael.de, сдвигать... а какой функцией обратно из кода символ можно получить?

да то что каждый второй исчезнит это плохо.. у меня есть \r\n в строках

Автор: Michael.de 26.8.2009, 00:46
Reptor, я перепутал, ничего не исчезает (просто при показе алертом \\ превращаются в \)
Код

var i, str1, str2='', shift=5;
// кодируем:
str1='|||3rnhwtxtky3htr';
for (i=0; i<str1.length; i++) str2+=String.fromCharCode(str1.charCodeAt(i)-shift);
alert(str2);
// и декодируем:
str1='';
for (i=0; i<str2.length; i++) str1+=String.fromCharCode(str2.charCodeAt(i)+shift);
alert(str1);
т.е. вначале добавляешь некоторую величину к значению каждого байта твоего первоначального текста, а потом - отнимаешь (или наоборот) smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)