2023-01-13 05:40:33 +01:00
|
|
|
export function byteify(string: string, encoding: "ascii" | "base64" | "hex") {
|
2020-05-09 01:20:22 +02:00
|
|
|
switch (encoding) {
|
2023-01-13 05:40:33 +01:00
|
|
|
case "ascii":
|
|
|
|
return Uint8Array.from(string, (c) => c.charCodeAt(0));
|
|
|
|
case "base64":
|
2020-05-09 01:20:22 +02:00
|
|
|
return Uint8Array.from(
|
2023-01-13 05:40:33 +01:00
|
|
|
atob(string.replace(/-/g, "+").replace(/_/g, "/")),
|
|
|
|
(c) => c.charCodeAt(0),
|
2020-05-09 01:20:22 +02:00
|
|
|
);
|
2023-01-13 05:40:33 +01:00
|
|
|
case "hex":
|
2020-05-09 01:20:22 +02:00
|
|
|
return new Uint8Array(
|
2023-01-13 05:40:33 +01:00
|
|
|
string.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)),
|
2020-05-09 01:20:22 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function hexify(buffer: ArrayBuffer) {
|
2023-01-13 05:40:33 +01:00
|
|
|
return Array.from(new Uint8Array(buffer)).reduce(
|
|
|
|
(str, byte) => str + byte.toString(16).padStart(2, "0"),
|
|
|
|
"",
|
|
|
|
);
|
2020-05-09 01:20:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export function stringify(buffer: ArrayBuffer) {
|
2023-01-13 05:40:33 +01:00
|
|
|
return String.fromCharCode(...new Uint8Array(buffer));
|
2019-07-03 13:18:07 +02:00
|
|
|
}
|