1const digitCharacters = [ 2 '0', 3 '1', 4 '2', 5 '3', 6 '4', 7 '5', 8 '6', 9 '7', 10 '8', 11 '9', 12 'A', 13 'B', 14 'C', 15 'D', 16 'E', 17 'F', 18 'G', 19 'H', 20 'I', 21 'J', 22 'K', 23 'L', 24 'M', 25 'N', 26 'O', 27 'P', 28 'Q', 29 'R', 30 'S', 31 'T', 32 'U', 33 'V', 34 'W', 35 'X', 36 'Y', 37 'Z', 38 'a', 39 'b', 40 'c', 41 'd', 42 'e', 43 'f', 44 'g', 45 'h', 46 'i', 47 'j', 48 'k', 49 'l', 50 'm', 51 'n', 52 'o', 53 'p', 54 'q', 55 'r', 56 's', 57 't', 58 'u', 59 'v', 60 'w', 61 'x', 62 'y', 63 'z', 64 '#', 65 '$', 66 '%', 67 '*', 68 '+', 69 ',', 70 '-', 71 '.', 72 ':', 73 ';', 74 '=', 75 '?', 76 '@', 77 '[', 78 ']', 79 '^', 80 '_', 81 '{', 82 '|', 83 '}', 84 '~', 85]; 86 87export const decode83 = (str: string) => { 88 let value = 0; 89 for (let i = 0; i < str.length; i++) { 90 const c = str[i]; 91 const digit = digitCharacters.indexOf(c); 92 value = value * 83 + digit; 93 } 94 return value; 95}; 96 97export const encode83 = (n: number, length: number): string => { 98 let result = ''; 99 for (let i = 1; i <= length; i++) { 100 const digit = (Math.floor(n) / Math.pow(83, length - i)) % 83; 101 result += digitCharacters[Math.floor(digit)]; 102 } 103 return result; 104}; 105