34 lines
665 B
JavaScript
34 lines
665 B
JavaScript
// @ts-check
|
|
|
|
/**
|
|
* @param {Uint8Array} bytes
|
|
* @returns {string}
|
|
*/
|
|
export default (bytes, maxBytes = 1024) => {
|
|
let result = "";
|
|
let hasWrittenFirstByte = false;
|
|
|
|
// We truncate for performance.
|
|
//
|
|
// There are other ways to achieve this but this is the simplest.
|
|
const shouldTruncate = bytes.byteLength > maxBytes;
|
|
if (shouldTruncate) {
|
|
bytes = bytes.subarray(0, maxBytes);
|
|
}
|
|
|
|
for (const byte of bytes) {
|
|
if (hasWrittenFirstByte) {
|
|
result += " ";
|
|
} else {
|
|
hasWrittenFirstByte = true;
|
|
}
|
|
result += byte.toString(16).padStart(2, "0");
|
|
}
|
|
|
|
if (shouldTruncate) {
|
|
result += " … ";
|
|
}
|
|
|
|
return result;
|
|
};
|