From 1a82a909c5c4d0262d69a8a543e902ff6533a4b2 Mon Sep 17 00:00:00 2001 From: vnugent Date: Mon, 1 Jan 2024 10:56:02 -0500 Subject: swallow vnlib.browser --- lib/vnlib.browser/src/binhelpers.ts | 72 +++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 lib/vnlib.browser/src/binhelpers.ts (limited to 'lib/vnlib.browser/src/binhelpers.ts') diff --git a/lib/vnlib.browser/src/binhelpers.ts b/lib/vnlib.browser/src/binhelpers.ts new file mode 100644 index 0000000..c6ad274 --- /dev/null +++ b/lib/vnlib.browser/src/binhelpers.ts @@ -0,0 +1,72 @@ +// Copyright (c) 2023 Vaughn Nugent +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +export const LongToArray = function (long : number) { + // Empty array + const byteArray = Array(8).fill(0) + for (let index = 0; index < 8; index++) { + const byte = long & 0xff + byteArray[index] = byte + long = (long - byte) / 256 + } + return byteArray +} + +export const IntToArray = function(int : number) { + // Empty array + const byteArray = Array(4).fill(0) + for (let index = 0; index < 4; index++) { + const byte = int & 0xff + byteArray[index] = byte + int = (int - byte) / 256 + } + return byteArray +} + +export const Base64ToArray = function (b64string : string) : Array { + // Recover the encoded data + const decData = atob(b64string) + // Convert to array + return Array.from(decData, c => c.charCodeAt(0)) +} + +export const Base64ToUint8Array = function (b64string : string) : Uint8Array { + // Recover the encoded data + const decData = atob(b64string) + // Convert to array + return Uint8Array.from(decData, c => c.charCodeAt(0)) +} + +export const Utf8StringToBuffer = function (str : string) : Array { + // encode the string to utf8 binary + const enc = new TextEncoder().encode(str) + return Array.from(enc); +} + +export const ArrayBuffToBase64 = function(e : ArrayBuffer) : string { + const arr = Array.from(new Uint8Array(e)) + return btoa(String.fromCharCode.apply(null, arr)) +} + +export const ArrayToHexString = function(buffer : Array | ArrayBuffer) : string { + return Array.prototype.map.call(buffer, function (byte : number) { + return ('0' + (byte & 0xFF).toString(16)).slice(-2) + }).join('') +} -- cgit