Javascript:如何将字符串(例如“foobar”)编码为int表示?

Javascript:如何将字符串(例如“foobar”)编码为int表示?,javascript,encode,Javascript,Encode,我想写一个函数,将字符串编码/解码为int值。这样做的目的是,我可以使用我编写的仅限于整数的RSA加密/解密方法对文本进行加密 基本上我想要的是: encode("foo bar") // ex output: 488929774 decode(488929774) // ex output: "foo bar" 您的方法存在重大问题,您应该逐个字符编码,而不是尝试对整个字符串的数字表示进行编码 字符串是使用某种字符编码的字符序列。字符可以用整数表示,因此您可以连接这些整数,并生成一个表示整

我想写一个函数,将字符串编码/解码为int值。这样做的目的是,我可以使用我编写的仅限于整数的RSA加密/解密方法对文本进行加密

基本上我想要的是:

encode("foo bar") // ex output: 488929774 
decode(488929774) // ex output: "foo bar"

您的方法存在重大问题,您应该逐个字符编码,而不是尝试对整个字符串的数字表示进行编码

字符串是使用某种字符编码的字符序列。字符可以用整数表示,因此您可以连接这些整数,并生成一个表示整个字符串的整数。但结果整数的大小将无法处理

我将公开如果您尝试将字符串转换为其数字表示形式(具有适当填充的字符代码序列),会发生什么情况

如果您使用
str.charCodeAt(index)
将每个字符转换为其UTF-16数字表示形式,它可以表示0到65535(5位)之间的值,您将得到不同长度的数字

例如:
'a'.charCodeAt(0)=97
//2位

例如:
'w'.charCodeAt(0)=119
//3位数字

每个字符表示都需要具有相同的长度,因此必须转换回字符串,有时还需要使用零(0)作为前缀添加一些填充

例如:
97='00097'
//长度:5

例如:
119='00119'
//长度:5

如果将这些填充字符码串联在一起,就会得到一个长的数字字符串,可以将其转换回整数

例如:
'aw'='0009700119'
=>
编号('0009700119')=9700119

此时,您应该已经能够看到您将遇到的问题:Number.MAX\u SAFE\u INTEGER


演示实现:encode()/decode() 长度超过3个字符的字符串将产生意外结果

函数编码(myString){
让resultStr='';

for(设i=0;iHint:encryption在位流上工作。(也可以将其视为整数,但通常不会,因为计算机不擅长任意精度的算术)这似乎是一个。你想实现什么?你需要它做什么?好吧,一个字符串就是一堆Unicode数据点,它们本身就是整数。你需要把数字组合成一个整数,这个整数可以分解成Unicode数据点,然后再分解成一个字符串。@Hereticsmonkeyey是否可以处理任意大的整数?我对此表示怀疑。这就是为什么文本到整数编码无法工作,而且整个方法都被破坏了。@Bergi yep,我听到了。这听起来像是一个寻找问题的解决方案……将字符串转换为整数数组(它的底层已经是),而不是单个整数