Javascript 是否有方法获取256个字符的唯一字符串,并将其减少';使用JS将大小设置为唯一的字符串50±;字符,并保留保证的唯一性?
我正在为一个文本文件构建一个解析器,以构建一个JSON对象 假设我在行中某处有一个字符串,它是唯一的值:Javascript 是否有方法获取256个字符的唯一字符串,并将其减少';使用JS将大小设置为唯一的字符串50±;字符,并保留保证的唯一性?,javascript,compression,Javascript,Compression,我正在为一个文本文件构建一个解析器,以构建一个JSON对象 假设我在行中某处有一个字符串,它是唯一的值:4e183437f3faebc107c33cd16657661598a2a523867a4a95f6dad4d25e191722affb3ffe287d9eb21ed8035e766d066e654d4b337c34459ba7cd6f72437b439329b45f15d571176965728b455d35aa904106a29644507b4b4b4d6b4d6b4d6b4d6b4d6b
4e183437f3faebc107c33cd16657661598a2a523867a4a95f6dad4d25e191722affb3ffe287d9eb21ed8035e766d066e654d4b337c34459ba7cd6f72437b439329b45f15d571176965728b455d35aa904106a29644507b4b4b4d6b4d6b4d6b4d6b4d6b4d167b4b4b4b167b4b4b4b4b4b4b4b167b4b4b4b4b4b4b4b4b4b4b4b4b4b4b
我想在某种程度上将这个唯一标识符用作键
,但它太长了,不适合我的口味
我想知道是否有办法创建一个较小的“散列”:
但不要丢失信息
保证唯一性
被转换回原来的状态
一些库/插件?您可以创建一个长度较小的字符串,方法是将16位十六进制字符串转换为一个数字(使用BigInt),然后创建一个以10000为基数的新字符串,这样一个字符代码为C的字符表示数字'C'。charCodeAt()
然后通过反向执行相同的过程将其转换回原始字符串
字符串长度较短,您已保存了一些位,但仍然很长:
const encode=(输入)=>{
设n=0n;
[…输入].forEach((字符,i)=>{
const code=char.charCodeAt();
常量值=BigInt(代码{
让base10Str='';
[…已编码].forEach((字符)=>{
base10Str+=String(char.charCodeAt()).padStart(4,'0');//todo:最终字符可能不需要填充
});
设n=BigInt(base10Str);
让inputStr='';
对于(设i=255;i>=0;i--){
常数thisHexMult=16n**BigInt(i);
const thisHexDigitBigInt=n/thisHexMult;//这将自动有效地调用Math.floor
n=n%thisHexMult;
常量thisHexDigit=数字(thisHexDigitBigInt);
const charCode=thisHexDigit这256个字符是十六进制的,因此每个字符代表4位-即,您有1024位…每个字符8位,您将有128个字符…因此,无法达到50