Показать сообщение отдельно
  #5 (permalink)  
Старый 22.04.2013, 14:07
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

var fileNameEncode, fileNameDecode;

(function() {
  var sEncode = [ '0', '1', '2', 'a', 'b', 'c', '-', '+', '_' ];
  // реальный массив должен быть большим, напр. 0..9, a..z, другие символы
  var sDecode = {};
  var x1, i;
  for( i = 0; i < sEncode.length; ++i )
    sDecode[ sEncode[i] ] = i;
  fileNameEncode = function( x ) {
    x = +x; // преобразуем в десятичное число
    var ret = "";
    do {
      ret = sEncode[ x % sEncode.length ] + ret;
      x = Math.floor( x / sEncode.length );
    } while( x );
    return ret;
  }
  fileNameDecode = function( x ) {
    x = x.toString();
    var ret = 0;
    for( i = 0; i < x.length; ++i )
      ret = ret * sEncode.length + sDecode[ x.charAt(i) ];
    return ret;
  }
})();

var tt = fileNameEncode( '12345' );
alert( tt + "  " + fileNameDecode( tt ) );
Ответить с цитированием