/** BSD-2-Clause license * * Copyright (c) 2018-2023 NST , smake . * */ ArrayBuffer.prototype.toHexdump = function () { return new Uint8Array(this).reduce( (p, c, i, a) => p + ( i % 16 === 0 ? i.toString(16).padStart(6, 0) + ' ' : ' ' ) + c.toString(16).padStart(2, 0) + ( i === a.length - 1 || i % 16 === 15 ? ' '.repeat((15 - i % 16) * 3) + Array.from(a).splice(i - i % 16, 16).reduce((r, v) => r + ( v > 31 && v < 127 || v > 159 ? String.fromCharCode(v) : '.' ), ' ') + '\n' : '' ), '' ); }