<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <SCRIPT LANGUAGE="JavaScript"> //压缩前字符串 var _former = "23475439057468947233475094759027569027589720954764597063576037856975607458673087620720457634895768495764895638963470634706945769485762"; //var _former = "2330248"; /** * 压缩算法,分别取出两个数字转换成ASCII码,如果字符个数为奇数时,返回最后一位的负数值 * @param _former : 准备压缩的字符串 * @return _arr : 压缩后的数组 * @auth 方小洲 */ function _doZip(_former){ //定义数组、数组长度 var _arr = [] ; var _len = 0 ; //循环取出两个数字 for(var i = 0 ; i < _former.length - 1 ; i=i+2){ var _tmp = String.fromCharCode(_former.substring(i,i+2)); _arr[_len++] = _tmp ; } //如果字符个数为奇数时,返回最后一位的负数值 if(_former.length % 2 == 1){ _arr[_len++] = "-"+_former.charAt(_former.length-1); } return _arr ; } /** * 压缩算法,分别取出两个数字转换成ASCII码,如果字符个数为奇数时,返回最后一位的负数值 * @param _arr : 准备解压的数组 * @return _latter : 解压后的字符串 * @auth 方小洲 */ function _doUnZip(_arr){ //定义数组、数组长度 var _brr = [] ; var _len = 0 ; //循环取出每个字符,把ASCII转换成数字 for(var i = 0 ; i < _arr.length -1 ; i++){ var _tmp = _arr[i].charCodeAt(0); if(parseInt(_tmp) < 10 ){ _tmp = "0" + _tmp ; } _brr[_len++] = _tmp ; } //取出数组的最后一个元素 var _theLast = _arr[_arr.length - 1]; //如果长度大于1,表示为负数,返回其绝对值就可以了 if(_theLast.length > 1) { var _tmp = parseInt(_theLast); _tmp = Math.abs(_tmp); _brr[_len++] = _tmp ; }else { //表示正常压缩,按原来的解压 var _tmp = _theLast.charCodeAt(0); if(parseInt(_tmp) < 10 ){ _tmp = "0" + _tmp ; } _brr[_len++] = _tmp ; } //把数组转换为字符串 var _latter = _brr.join(''); return _latter ; } /** * 把数组变成字符串 * @param _arr : 数组 * @return _str : 返回的字符串 * @auth 方小洲 */ function _changeArrayToString(_arr){ var _str = _arr.join(''); return _str ; } var _latter = _doZip(_former); document.write("压缩前:"+_former + "<br/>" ); document.write("压缩后:"+_changeArrayToString(_latter) + "<br/>" ); document.write("解压后:"+_doUnZip(_latter) + "<br/>" ); </SCRIPT> </HEAD> <BODY> </BODY> </HTML>?只支持纯数字