【发布时间】:2014-04-27 09:56:27
【问题描述】:
我有以下情况:我需要编码我的字符串,然后我必须解码我的值。
编码后的字符串应与字符串本身具有相同的长度。我的输入字符串只有 = Alpha & Number 值。
例如:
String="Test12345" (lenght : 9)
Encode = (encode should lenght 9)
Decode = Test12345
我尝试了不同的 CharcodeAt , FromCharCode 函数,但我得到了更长的编码字符串。我找不到解决方案。
查看我编写代码的输出值:
1. Your Input String:
Test12345
2. Encoded String:
4R4A3W3V5Q5P5O5N5M
3. Result : Decoded/Actual Input String:
Test12345
代码:
String.prototype.toEncodedString = function()
{
var ostr=this.toString().replace(/\s+/g,'');
var x,nstr='',len=ostr.length;
for(x=0;x<len;++x)
{
nstr+=(255-ostr.charCodeAt(x)).toString(36).toUpperCase();
};
return nstr;
};
String.prototype.fromEncodedString = function() {
var ostr=this.toString();
var x,nstr='',len=ostr.length;
for(x=0;x<len;x+=2)
{
nstr+=String.fromCharCode(255-parseInt(ostr.substr(x,2),36));
};
return nstr;
};
谁能帮我解决这个问题。
【问题讨论】:
-
我认为您应该使用
fromCharCode()而不是toString()。您正在将每个编码字符转换为其字符代码的 base-36 值。 -
嗨 Barmar,我尝试转换我的编码/解码,但我得到了更多长度的值。我需要精确的值长度。
-
我需要将我的字符串值从一个系统传递到另一个系统,出于安全原因,我需要将我的输入字符串转换为“编码值”。我的输入字符串值总是与 Alphabetic(A to Z) & Numbers(0,1,2,3,4,5,6,7,8,9,10) 结合 输入字符串中没有特殊字符 输入字符串长度& 编码字符串长度值只能是最大 (96) 个字符。我可以对我的输入字符串进行编码,但编码值超出了输入字符串的长度。所以我无法实现这种情况。任何人都对简化这种情况有任何想法。 ?
-
如果您需要一个与解码后的字符串长度相同的编码字符串,您可能需要使用类似ROT13 的字符串,其中一个字符与另一个字符一一匹配。
-
如果您希望编码后的字符串与输入的长度相同,则必须将每个字符转换为一个字符。您将每个字符转换为两个字符,因为您使用的是基数 36。
标签: javascript string decode encode