✏️ 编辑:numberHash.js
路径:
/home/boguraj1/public_html/jobsite/node_modules/webpack/lib/util/numberHash.js
大小:1.04 KB · 修改:2022-11-21 20:13:00 · 权限:0644 · 可写
← 返回目录
👁 查看
⬇ 下载
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SAFE_LIMIT = 0x80000000; const SAFE_PART = SAFE_LIMIT - 1; const COUNT = 4; const arr = [0, 0, 0, 0, 0]; const primes = [3, 7, 17, 19]; module.exports = (str, range) => { arr.fill(0); for (let i = 0; i < str.length; i++) { const c = str.charCodeAt(i); for (let j = 0; j < COUNT; j++) { const p = (j + COUNT - 1) % COUNT; arr[j] = (arr[j] + c * primes[j] + arr[p]) & SAFE_PART; } for (let j = 0; j < COUNT; j++) { const q = arr[j] % COUNT; arr[j] = arr[j] ^ (arr[q] >> 1); } } if (range <= SAFE_PART) { let sum = 0; for (let j = 0; j < COUNT; j++) { sum = (sum + arr[j]) % range; } return sum; } else { let sum1 = 0; let sum2 = 0; const rangeExt = Math.floor(range / SAFE_LIMIT); for (let j = 0; j < COUNT; j += 2) { sum1 = (sum1 + arr[j]) & SAFE_PART; } for (let j = 1; j < COUNT; j += 2) { sum2 = (sum2 + arr[j]) % rangeExt; } return (sum2 * SAFE_LIMIT + sum1) % range; } };
💾 保存
取消
保存为 UTF-8,换行统一为 LF