Javascript 是否有方法获取256个字符的唯一字符串,并将其减少';使用JS将大小设置为唯一的字符串50±;字符,并保留保证的唯一性?

Javascript 是否有方法获取256个字符的唯一字符串,并将其减少';使用JS将大小设置为唯一的字符串50±;字符,并保留保证的唯一性?,javascript,compression,Javascript,Compression,我正在为一个文本文件构建一个解析器,以构建一个JSON对象 假设我在行中某处有一个字符串,它是唯一的值:4e183437f3faebc107c33cd16657661598a2a523867a4a95f6dad4d25e191722affb3ffe287d9eb21ed8035e766d066e654d4b337c34459ba7cd6f72437b439329b45f15d571176965728b455d35aa904106a29644507b4b4b4d6b4d6b4d6b4d6b4d6b

我正在为一个文本文件构建一个解析器,以构建一个JSON对象

假设我在行中某处有一个字符串,它是唯一的值:
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